MySQL の中国語クエリが文字化けする理由
MySQL のデフォルトの文字セットは LATIN1 であり、UTF-8 はより広く使用されているエンコード形式です。中国語データの保存に UTF-8 エンコーディングを使用し、クエリ時に LATIN1 エンコーディングを使用すると、クエリ結果が文字化けします。
MySQL では、次の方法で中国語クエリの文字化けの問題を解決できます。
データベース エンコーディングとテーブル エンコーディングを確認する
最初にデータベースとテーブルのエンコードが正しいかどうかをチェックし、データを保存するときのエンコード形式と一致していることを確認する必要があります。次の SQL ステートメントを使用して、データベースとテーブルのエンコード形式をクエリできます:
SHOW CREATE TABLE table_name; SHOW VARIABLES LIKE 'character_set_database';
クエリ結果では、データベースとテーブルのエンコード形式、およびサーバーの文字セットを確認できます。とクライアント、および現在の接続セットの文字が一致します。
MySQL 接続エンコーディングの設定
MySQL CONFIG 設定ステートメントを使用して、MySQL クライアント接続のエンコーディング形式を UTF-8 に設定できます。 . データ読み込み時の文字化けを防ぐため。 MySQL サーバーに接続するときに次のコマンドを使用できます:
mysql --default-character-set=utf8 -u username -p
このコマンドは、MySQL サーバーとの接続を確立するときにクライアントのエンコード形式を自動的に UTF-8 に設定し、読み取り時に表示されないようにします。データが文字化けする。
MySQL 構成ファイルを変更する
MySQL 5.5 以降を使用している場合は、構成ファイル my.cnf で、次の設定を通じて、MySQL サーバーのエンコード形式を UTF-8 に設定します。
[client] default-character-set=utf8 [mysqld] init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_general_ci
この構成ファイルでは、クライアントとサーバーのデフォルトのエンコード形式を UTF-8 に設定して、データの読み取り時に確実に文字化けが発生します。
MySQL フィールド エンコーディングを UTF-8 に設定します。
データベース内に間違ったエンコーディング形式を使用するデータがすでに存在する場合は、次のコマンドを使用して、データベース内のすべてのフィールドのエンコード形式を UTF-8 に設定できます:
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
上記のコマンドは、データベースとテーブルのすべてのエンコード形式を UTF-8 に変更して、読み取り時に確実にdata 文字化けは発生しません。
実際の使用では、特定の状況に応じてさまざまなソリューションを選択できます。中国語クエリの文字化けの問題を解決する場合、さまざまな文字セット間の変換には効率が必要であるという事実に注意する必要があるため、実際のビジネス ニーズに基づいて、効率と正確性の間のトレードオフを検討する必要があります。最も適切なソリューションを選択してください。
以上がmysql中国語クエリの文字化けを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。