MySQL データベースを使用すると、テーブルが文字化けして、クエリ、挿入、その他の操作が失敗することがあります。この記事では、MySQLのテーブルが文字化けする原因とその解決方法を紹介します。
1. 理由
MySQL データベースとクライアントが同じエンコーディングを使用しない場合、文字化けが発生します。たとえば、クライアントが UTF-8 エンコードを使用し、MySQL データベースが GBK エンコードを使用している場合、文字化けが発生します。
MySQL データベース内の特定の文字セットが現在使用している文字セットと一致しない場合にも、文字化けが発生します。
GBK エンコード文字列を UTF-8 エンコード テーブルに挿入すると、文字化けが発生します。
2. 解決策
MySQL データベースとクライアントで使用されるエンコーディングが一致していない場合は、 MySQL データベースのエンコーディングを変更できます。 MySQL では、次のコマンドを使用してデータベースのエンコーディングを変更できます:
ALTER DATABASE [database_name] DEFAULT CHARACTER SET [charset_name];
ここで、database_name
はデータベースの名前、charset_name
はエンコーディングです。設定したい名前を選択します。たとえば、データベースを UTF-8 エンコードに変更する場合は、次のコマンドを使用できます。
ALTER DATABASE mydatabase DEFAULT CHARACTER SET utf8;
If上記の方法では問題が解決しません。テーブルのエンコーディングの不一致が原因である可能性があります。次のコマンドを使用して、テーブルのエンコーディングを変更できます。
ALTER TABLE [table_name] CONVERT TO CHARACTER SET [charset_name];
このうち、table_name
は変更するテーブルの名前、charset_name
です。は、設定するエンコーディング名です。たとえば、データベース内のテーブル mytable
を UTF-8 エンコードに変更する場合は、次のコマンドを使用できます:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8;
MySQL データベース内の一部の文字セットが現在使用している文字セットと一致しない場合は、次のコマンドを使用して文字セットを変更できます:
SET NAMES [charset_name];
たとえば、 UTF-8 文字を使用する 設定すると、次のコマンドを使用できます。
SET NAMES utf8;
非 UTF-8 エンコードを挿入する必要がある場合を UTF-8 でエンコードされたテーブル データに変換したら、次のコマンドを使用してエンコードを変換できます。
CONVERT([string] USING [charset_name]);
このうち、string
は挿入する文字列、charset_name です。
は、変換するエンコーディング名です。たとえば、GBK でエンコードされた文字列を UTF-8 でエンコードされたテーブルに挿入する場合は、次のコマンドを使用できます:
INSERT INTO mytable (mycolumn) VALUES (CONVERT('你好', USING gbk));
iconv コマンドを使用して、GBK エンコードされたデータを UTF-8 エンコードに変換できます。
$ iconv -f GBK -t UTF-8 < input.txt > output.txt
input.txt で、出力ファイルは
input.txt です。ファイルは
output.txt
以上がmysqlテーブルのコードが文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。