ホームページ  >  記事  >  データベース  >  データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

黄舟
黄舟オリジナル
2017-03-16 14:18:111306ブラウズ

この記事は主にデータベースMySQLの中国語文字化けの解決策の概要を紹介します。データベースは中国語の文字化けを保存するため、必要な場合はいくつかの方法を参照してください。

MySQL 中国語文字化けの解決策

前書き:

MySQL は、私たちのプロジェクトで非常に一般的に使用されるデータ データベースです。しかし、中国語の文字をデータベースに保存する必要があるため、データベースの文字化けが頻繁に発生します。データベースの中国語文字化け問題を完全に解決する方法を紹介します。

1. 中国語の文字化け

1.1. 中国語の文字化け


 create table user(name varchar(11));  # 创建user表
 insert into table user("carl");     # 添加数据
 select * from user;

中国語の文字を挿入できません:

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)


1.2. テーブル文字のコーディング

insert into user value("哈哈");
データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

テーブルのデフォルトの

文字セット

が latin1 であることがわかります。したがって、テーブルを作成するときに、テーブルの文字セットを指定する必要があります:


mysql> show create table user \G;
*************************** 1. row ***************************
    Table: user
Create Table: CREATE TABLE `user` (
 `name` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Linux
でアクセスできるようになり、このテーブルを挿入してアクセスできるようになりました。

1.3、データベースとオペレーティングシステムのコーディング

サーバー側では中国語が正常に表示されますが、クライアント側では文字化けが表示される場合があります。サーバーがUTF8だからです。

そして、データベースのエンコードにも問題があります。

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

ここでは、character_sert_database とcharacter_set_server の文字セットが両方とも latin1 であることがわかります。次に、

mysql データベース

では、server、database、table の文字セットがすべてデフォルトで latin1 であることがわかります。 mysqlの文字化け状態を解決します。

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)2、mysql設定

変数範囲

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)2.1、

session

スコープデータベースエンコーディングの表示:

 create table user(name varchar(11)) default charset=utf8;

文字エンコーディングの変更:

rreee


文字セットがutf8に変更されていることがわかります。しかし、ここで問題があります。つまり、コマンド ウィンドウを再度開いてデータ エンコーディングを確認すると、次の画面が表示されます: データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

2.2、グローバル スコープ

mysql 設定変数のスコープはデフォルトでセッション スコープになります。 。複数のセッションの文字セットを設定する場合は、グローバル範囲を設定する必要があります: Set [global|session] 変数...

データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

show variables like '%char%';

セッション全体で

mysql 文字セット

を表示すると、次のことがわかります。それらはすべてutf8です。すべてがうまくいくと思ったら、それは完全に間違っています。 データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

2.3. データのグローバル スコープを設定する

データベースが再起動すると、グローバル スコープの設定値が再び latin1 になることがわかります。


set character_set_server=utf8;
set character_set_database=utf8;
show variables like '%char%';

恐れることはありません。以下に究極のトリックをお教えします:

mysql

設定ファイル

/etc/my.cnfを変更します。


set global character_set_database=utf8;
set global character_set_server=utf8;
show variables like '%char%';

これらのパラメータ設定の場所に注意してください。そうしないと、mysql サービスが開始されない可能性があります: データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

OK。ここで、mysql サービスを再起動すると、その文字セットが utf8 であることがわかります。


また、テーブルを作成するときに文字エンコーディングを指定する必要はなく、デフォルトは utf8;

service mysqld restart
mysql -uroot -pyourpassword
show variables like '%char%';
データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

3 、概要データベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)

インターネット上の多くの回答では、MySQL の文字エンコーディングをセッションレベルで直接設定していることがわかりました。これは永続的な解決策ではなく、一時的な解決策です。この問題を根本から解決する必要があります。それは、mysqlのデフォルト設定ファイルを修正し、文字セットを漢字が使用できるUTF8に変更することです。

以上がデータベースMySQLの中国語文字化け解決方法まとめを詳しく解説(写真と文章)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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