1

(私の下手な英語について申し訳ありません、私はフランス人です)

私は、MySQL で指定されたすべてのレベル (サーバー、データベース、テーブル、列) で UTF-8 / utf8_general-ci を使用するように構成された MySQL データベース ウィッチで作業しています。

PHPを介してデータを読み書きすると、完全に機能します。すべてのデータは UTF-8 を使用していました。

私の問題 :

これらのデータをmysqlプログラム、phpMyAdminインターフェイス、またはmysqldumpでエクスポートして読み取ろうとすると、すべての文字列が "ç" のような奇妙なアクセントで表示されます (ISO-8859-1 のように読み取られる UTF-8 です)。

UTF-8を使用するようにすべてのMySQL文字セット関連の変数を設定および構成しようとしましたが、何も変わりません:

mysql> "character\_set\_%" のような変数を表示します。
+--------------------------+-------+
| | 変数名 | 値 |
+--------------------------+-------+
| | character_set_client | utf8 |
| | character_set_connection | utf8 |
| | character_set_database | utf8 |
| | character_set_filesystem | utf8 |
| | character_set_results | utf8 |
| | character_set_server | utf8 |
| | character_set_system | utf8 |
+--------------------------+-------+
7 行セット (0.00 秒)

また、(すべての変数を UTF-8 に設定した後) MySQL 自体に新しい行を挿入しようとします。この新しい行は MySQL では問題なく読み取られます (アクセントは問題ありません) が、PHP プログラムでこれらの行を読み取ると、ISO-8859-1 のようで、UTF-8 での表示に失敗しました。

文字セットと照合に関するすべての MySQL ドキュメントを読みましたが、この問題に関する説明や回答は見つかりませんでした。

だから、誰かがMySQLプログラムが文字セットを気にしないように見える理由とそれを修正する方法を理解するのを手伝ってくれる?

4

1 に答える 1

0

最終的に別のフォーラムで解決策を見つけました: http://fr.openclassrooms.com/forum/sujet/mysql-phpmyadmin-etc-ignorent-les-encodages (fr)

問題は PHP の PDO 構成レベルにありました。MySQL DSN に「charset」変数を指定しなかったため、MySQL がデータを (UTF-8 で) 受け取ると、彼はそれが latin1 であると考えて UTF- 8、彼はデータを再び UTF-8 に変換します。

解決策は簡単です。MySQL DSN (PDO) で正確な文字セットを UTF-8 にするだけです: http://fr2.php.net/manual/en/ref.pdo-mysql.connection.php

さよなら。

于 2013-11-21T08:59:47.380 に答える