MySQL にインポートされたデータの文字化けの解決策について話しましょう

PHPz
リリース: 2023-04-21 11:37:53
オリジナル
2658 人が閲覧しました

MySQL は、さまざまなインターネット アプリケーションで広く使用されているオープン ソースのリレーショナル データベース管理システムです。データベースに保存されているデータには中国語が含まれる場合があり、データインポート時に文字化けが発生することがよくあります。この記事では、MySQL データインポートが文字化けする場合の解決策を紹介します。

1. 原因分析

MySQL では、データベースの文字セットとデータテーブルの文字セットが一致していないと、インポートされたデータが文字化けします。したがって、データをインポートする前に、データベースとデータ テーブルの文字セットが一致しているかどうかを注意深く確認する必要があります。矛盾している場合は、変更する必要があります。

2. キャラクタ セットの変更

  1. データベース キャラクタ セットの変更

まず、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 を使用することをお勧めします。

  1. データ テーブルのキャラクタ セットを変更する

データベース キャラクタ セットを変更しても、データのインポート時に文字化けが発生する場合は、次のような文字セットが使用されていない可能性があります。データテーブルとデータベースの不一致が原因です。次のコマンドを使用してデータ テーブルの文字セットをクエリできます:

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 などがあります。

  1. iconv を使用する

iconv を使用して、データ エンコードをターゲット エンコードに変換できます。たとえば、GBK エンコード データを UTF-8 エンコードに変換します。

iconv -f GBK -t UTF-8 file.txt > file_utf-8.txt
ログイン後にコピー
-f は元のエンコーディングを表し、-t はターゲット エンコーディングを表します。file.txt は元のデータ ファイル名、file_utf-8.txt は変換後のファイル名です。

    recode の使用
recode は iconv に似ており、GB2312 エンコード データを UTF-8 エンコードに変換するなど、データ エンコードをターゲット エンコードに変換することもできます。

recode gb2312..utf8 file.txt
ログイン後にコピー
gb2312 は元のエンコードを表し、utf8 はターゲット エンコードを表し、file.txt は元のデータ ファイル名です。

変換ツールを使用する場合は、ソース ファイルのエンコード形式とターゲットのエンコード形式が正しいかどうかに注意する必要があります。正しくないと、変換後のデータが文字化けします。

4. 概要

MySQL データ インポートの文字化けの解決策には、文字セットの変更とデータ エンコーディングの変換が含まれます。キャラクタ・セットを変更する場合は、データベースのキャラクタ・セットとデータ・テーブルのキャラクタ・セットが一貫していることを確認する必要があり、データ・エンコーディングを変換する場合は、ソース・ファイルのエンコーディングとターゲット・エンコーディングの正確さに注意する必要があります。上記のいずれの方法でも文字化けが解決しない場合は、データソース自体に問題がある可能性があり、データソースが正しいか確認する必要があります。

以上がMySQL にインポートされたデータの文字化けの解決策について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート