0

一部の UTF-8 テキストがデータベース テーブルに正しく保存されない理由の説明を期待しています...

HTML フォームを作成しましたが、ページのメタ コンテンツは UTF-8 に設定されています。

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

PHP とテンプレート ファイルはすべて Unicode/UTF-8 です。

utf8_unicode_ciフォーム フィールド データは、エンコードされたデータベース テーブルに送信されます。

"éçä" (Unicode 文字セットに設定された Windows の Character Map プログラムから作成したもの) などの文字を含むフォームを送信すると、データベースに正しく表示されません ("éã§ã¤")。phpMyAdmin (これも UTF-8 文字エンコーディングに設定されています) を介してデータベースを表示しています。

ただし、データベースに挿入する前に、文字列に対して iconv() を実行して ISO-8859-1 に変換すると、文字が正しく表示されます。

$input = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $input);

何が起こっている?すべてが最初から最後まで UTF-8/Unicode であるという事実が、DB で正しいという結果になるのではないでしょうか? データを ISO-8859-1 に変換できたのはなぜですか?

データに対して行われる他の唯一のことは、FILTER_SANITIZE_MAGIC_QUOTES です。

$input = filter_var($input,FILTER_SANITIZE_MAGIC_QUOTES);

お時間をいただきありがとうございます。

4

1 に答える 1

1

あなたが言及していない2つのステップ:

  • HTTPContent-TypeヘッダーにUTF-8を指定
  • PDO での指定など、 MySQL への接続時に UTF-8 を指定します。charset
于 2013-02-25T16:53:13.713 に答える