1

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 が正しく機能していることは間違いありません。では、他にどこで問題を探すことができますか?

4

1 に答える 1

0

元の文字ごとに 2 文字を取得するため、Unicode ではなく標準の ASCII として読み取ります。おそらく、接続時に MySQL 接続が使用している文字セットを指定する必要があります。

私は携帯電話にいますが、DB接続コードを投稿していただければ、コンピューターに到達したときの方法をお見せできます

編集 - PHP PDO: charset, set names?を参照してください。

于 2012-08-31T00:23:38.267 に答える