ホームページ >php教程 >php手册 >PHP からアクセスした MySQL 4.1 の文字化け問題を解決する

PHP からアクセスした MySQL 4.1 の文字化け問題を解決する

WBOY
WBOYオリジナル
2016-06-21 09:15:401551ブラウズ

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_%';
​​+-------------- -- --------+----------------------------+
| 値 |
+- --- -----------------------+-------------------------- -- --+
| 文字セット_接続 |
| 文字セット_サーバー |
| /usr/share/mysql/ charsets/ |
+--------------------------+---------------- -- ----------+
セット内の 7 行 (0.00 秒)


mysql> 'collat​​ion_%' のような変数を表示
+--------------- -- --------+-------------------+

| 値 |

+---------- --- -------+-------------------+

| 照合_データベース | latin1_swedish_ci |
| ------------------------+---------------------+
3 行セット ( 0.00 秒)


上記の値はシステムのデフォルト値です。 (なぜシステムがスウェーデン語のソート方法である latin1 をデフォルトにするのか不思議です)...


PHP を介して本来の方法で MySQL データベースにアクセスすると、テーブルのデフォルトの文字セットが utf8 に設定され、エンコードされている場合でも、 UTF-8 クエリを送信すると、データベースに保存されているデータが依然として文字化けしていることがわかります。問題はこの接続層にあります。解決策は、クエリを送信する前に次の文を実行することです:

SET NAMES 'utf8';

これは、次の 3 つの命令と同等です。

もう一度お試しください、これは正常ですか? ^_^ 楽しんでください!




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。