mysql|解決|問題
MySQL 4.1 以降に導入された多言語サポートは非常に優れており、いくつかの機能は他のデータベース システムを上回っています。ただし、テスト中に、MySQL 4.1 より前の MySQL に該当する PHP ステートメントを使用して MySQL データベースを操作すると、テーブルの文字セットが設定されていても文字化けが発生することがわかりました。新しい MySQL オンライン マニュアルの第 10 章「文字セットのサポート」を読んだ後、ついに解決策を見つけてテストに合格しました。
MySQL 4.1 の文字セット サポート (Character Set Support) には、文字セット (Character set) とソート方法 (照合順序) の 2 つの側面があります。文字セットのサポートは、サーバー、データベース、テーブル、接続の 4 つのレベルに細分化されています。
システムの文字セットとソート設定を表示するには、次の 2 つのコマンドを使用できます:
mysql> SHOW VARIABLES LIKE 'character_set_%';SET NAMES 'utf8';
+-------------- -- --------+----------------------------+
| 値 |
+- --- -----------------------+-------------------------- -- --+
| 文字セット_接続 |
| 文字セット_サーバー |
| /usr/share/mysql/ charsets/ |
+--------------------------+---------------- -- ----------+
セット内の 7 行 (0.00 秒)
mysql> 'collation_%' のような変数を表示
+--------------- -- --------+-------------------+| 値 |
+---------- --- -------+-------------------+| 照合_データベース | latin1_swedish_ci |
| ------------------------+---------------------+
3 行セット ( 0.00 秒)
上記の値はシステムのデフォルト値です。 (なぜシステムがスウェーデン語のソート方法である latin1 をデフォルトにするのか不思議です)...
PHP を介して本来の方法で MySQL データベースにアクセスすると、テーブルのデフォルトの文字セットが utf8 に設定され、エンコードされている場合でも、 UTF-8 クエリを送信すると、データベースに保存されているデータが依然として文字化けしていることがわかります。問題はこの接続層にあります。解決策は、クエリを送信する前に次の文を実行することです:
これは、次の 3 つの命令と同等です。
もう一度お試しください、これは正常ですか? ^_^ 楽しんでください!