Unicode 文字を MySQL データベースに単純に挿入する短いスクリプトを作成しました。次のようになります。
mysql_connect('localhost', 'root', '*') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());
mysql_query("INSERT INTO thetable (thefield) VALUES ('äöüß')") or die(mysql_error());
Notepad++ を使用してスクリプトを生成しました。BOM なしでエンコードされた UTF-8 です。
データベースとテーブルにはutf8_general_ci
照合があります。PhpMyAdmin を使用してデータを見ると、文字セットが壊れているようです。文字が正しく表示されない:
ã¤ã¶ã¼ãŸ
スクリプトでデータを受け取ると、文字セットは問題ないようです。正しいヘッダー ( ) を付けてダンプしたところheader('Content-Type: text/html; charset=utf-8')
、すべてが正しく見えます。
PhpMyAdmin を使用してテーブルにデータを再度挿入すると、PhpMyAdmin 内に正しく表示されますが、デモ スクリプトからダンプするとすぐに、文字セットが再び壊れます。
何が原因かわかりません。データベースの文字セット、HTTP ヘッダー、およびスクリプトのエンコーディングは一貫しており、PhpMyAdmin が正しく機能していることは間違いありません。では、他にどこで問題を探すことができますか?