MySQL は、さまざまなインターネット アプリケーションで広く使用されているオープン ソースのリレーショナル データベース管理システムです。データベースに保存されているデータには中国語が含まれる場合があり、データインポート時に文字化けが発生することがよくあります。この記事では、MySQL データインポートが文字化けする場合の解決策を紹介します。
1. 原因分析
MySQL では、データベースの文字セットとデータテーブルの文字セットが一致していないと、インポートされたデータが文字化けします。したがって、データをインポートする前に、データベースとデータ テーブルの文字セットが一致しているかどうかを注意深く確認する必要があります。矛盾している場合は、変更する必要があります。
2. キャラクタ セットの変更
まず、MySQL データベースにログインし、データベースに入ります。
SHOW CREATE DATABASE `database_name`;
次に示すように、文字セット設定ステートメントが表示されます:
CREATE DATABASE `database_name` /*!40100 DEFAULT CHARACTER SET utf8 */
ここでの utf8 は、MySQL データベースの文字セットです。
ALTER DATABASE `database_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ここでの utf8mb4 は utf8 と同じですが、より多くの文字セットをサポートしています。utf8mb4 を使用することをお勧めします。
データベース キャラクタ セットを変更しても、データのインポート時に文字化けが発生する場合は、次のような文字セットが使用されていない可能性があります。データテーブルとデータベースの不一致が原因です。次のコマンドを使用してデータ テーブルの文字セットをクエリできます:
SHOW CREATE TABLE `table_name`;
次に、以下に示すように、文字セットと照合ルールの設定を確認できます:
CREATE TABLE `table_name` ( `id` int(10) unsigned NOT NULL, `name` varchar(255) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CHARSET および COLLATEここでは、それぞれ文字セットと、データベースの文字セットと一致する必要がある校正ルールを示します。一貫性がない場合は、次のステートメントを実行して変更できます。
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注: キャラクタ セットを変更すると、データベースのパフォーマンスと記憶領域に影響を与える可能性があるため、慎重に扱う必要があります。
3. データエンコーディングの変換
データインポート時に文字化けが発生する場合は、データエンコーディングの変換を試してください。一般的な変換ツールには、iconv や recode などがあります。
iconv を使用して、データ エンコードをターゲット エンコードに変換できます。たとえば、GBK エンコード データを UTF-8 エンコードに変換します。
iconv -f GBK -t UTF-8 file.txt > file_utf-8.txt
recode gb2312..utf8 file.txt
以上がMySQL にインポートされたデータの文字化けの解決策について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。