1

重複の可能性:
PHP / MySQL の特殊文字

私は問題があります。私のデータベース (MySQL 5.5.20) には、MySQL クエリを実行して echo($...) で表示した後に正しく表示されない 'é' や " ' " などの文字を含むテキストがあります。データベースに入力した特殊文字ごとに、ひし形の中に小さな疑問符が表示されます。データベース自体のテキストを見ると、それは「é」と「 」であるため、問題は MySQL ではないことがわかりました。

私ができることの 1 つは、入力時に " ' " --> "'" のようなすべてを str_replace することですが、その後、存在するすべての文字に対してこれを行う必要があります。ああ、私はすでに含まれています

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

そしてこれはうまくいきませんでした。

うまくいけば、言うだけでなくても、私を助けるためのすべての情報が得られます:) よろしくお願いします!

ミラノ

4

3 に答える 3

5

すべてを utf-8 にする必要があります。

  • データベース フィールド
  • データベース接続 (mysql_set_charset('utf8');従来の mysql では$db->exec('SET CHARACTER SET utf8');、PDO のようなもの)
  • コンテンツ タイプ (すでにお持ちのように)
于 2012-05-03T15:38:08.307 に答える
0

私は通常、すべての入力テキストを str_replace でフォーマットし、すべての珍しい記号を &#xxx; に置き換えます。同等であり、これはインジェクションと不正な html レンダリングを防ぐのに実際に役立ちます

つまり、誰かが html タグを入力すると、それらはあなたのページでアクティブになります。

于 2012-05-03T15:53:09.367 に答える
0

SET NAMES utf8DBへの接続が成功した直後にSQLクエリを1年以上使用していました。ただし、すべてが同じエンコーディングである場合、これは必要ありません

  • ソースファイルのエンコーディング
  • 表の列の照合
  • Web ページのエンコーディング (PHPheader('Content-Type: text/html; charset=utf-8');と の両方<header> <meta name="Content-Type" value="text/html; charset=utf-8" />)
于 2012-05-03T15:50:40.447 に答える