ホームページ >php教程 >php手册 >MySQLの中国語文字化け問題の解決方法を図解で詳しく解説

MySQLの中国語文字化け問題の解決方法を図解で詳しく解説

PHPz
PHPzオリジナル
2016-06-13 12:36:251050ブラウズ

この記事では、MySQL での中国語の文字化けの問題を解決する方法 (文字化けの問題の完璧な解決策) に関する関連情報を紹介します。また、MySQL で中国語の文字化けが発生する一般的な原因もいくつかまとめています。 MySQL を見に来てください。

ここ 2 日間、プロジェクトの作業中に文字化けに悩まされていましたが、mysql の中国語の文字化けの問題が解決しただけではありません。参考のために私の解決策を共有します。後で自分で確認することもできます。

最初に:

「%colla%」のような show 変数を使用し、「%char%」のような show 変数を使用してデータベースの文字セットを確認します。設定

がすべて gbk2312 または gbk である場合は、簡体字中国語のみがサポートされており、一部の特殊記号は UTF-8 に変更することしかできません。 ,

変更方法は次のとおりです:

メモ帳または UitraEdit を使用して、mysql データベースのインストール ディレクトリにある my.ini ファイルを開き、Ctrl F を押して検索します。 default-character-set を変更し、次の文字セットを UTF8 に変更します。クライアント側とサーバー側の 2 か所を変更することに注意してください。

次に、保存して mysql サービスを再起動し、「%colla%」のような show 変数を使用し続けます。「%char%」のような show 変数を 2 つのステートメントでクエリします。 図に示すように:

これで設定は完了です。

注:

以前に削除されていないデータベースがある場合は、show database データベース名と show create table テーブル名を使用して、データベースとテーブルの文字セットが一致しているかどうかを確認してください。は UTF8 ですが、my.ini ファイルが変更されているため、元のデータベースの文字セットを変更できません。コマンド ラインで、

alter database namecharacter set "character set"; コマンドを使用して、データベース キャラクタ セットを変更できます。

もう 1 つの注意点は、UTF8 に変更した後、コマンドの行の下の中国語のテキストが文字化けしており、ページまたはコンソールにのみ出力されるのが正常です。この問題はコマンドラインではサポートされていないようですが、よくわかりません。 。

変更後、コマンドラインに中国語を挿入したい場合は、ステートメントを挿入する前に set names gbk2312 を実行すると中国語を挿入できますが、繁体字中国語と一部の特殊記号は挿入できません。

上記はここ数日のコード化けを解決した結果です。皆さんにアドバイスをいただければ幸いです。

MySQL で中国語文字化けが発生する理由をいくつか整理してみます。それは次の点に他なりません

1. サーバー自体の設定の問題、たとえば、まだ latin1 で止まっている
2. テーブルの言語設定の問題 (文字や照合順序を含む)
3. php ) の接続言語設定の問題

utf8 を使用することを強くお勧めします!!!!

utf8 は世界中のすべての文字と互換性があります!!!!

1. データベースとテーブルを作成するときに中国語の文字化けを回避し、エンコード方法を確認します

1. データベースを作成する場合:

CREATE DATABASE `test` 
CHARACTER SET 'utf8' 
COLLATE 'utf8_general_ci';

2. テーブル作成時

CREATE TABLE `database_user` ( 
`ID` varchar(40) NOT NULL default '', 
`UserID` varchar(40) NOT NULL default '', 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

これら 3 つの設定が完了したら問題は、データベースとテーブルを構築するときに同じエンコード形式が使用されることです。

ただし、すでにデータベースとテーブルを構築している場合は、次の方法でそれらをクエリできます。

1. デフォルトのエンコード形式を表示します:

mysql> show variables like "%char%"; 
+--------------------------+---------------+ 
| Variable_name | Value | 
+--------------------------+---------------+ 
| character_set_client | gbk | 
| character_set_connection | gbk | 
| character_set_database | utf8 | 
| character_set_filesystem | binary | 
| character_set_results | gbk | 
| character_set_server | utf8 | 
| character_set_system | utf8 | 
+--------------------------+-------------+

注: 前の 2 つで確認できます。 set names utf8、set names gbk を使用してデフォルトのエンコード形式を設定します。

SET NAMES utf8 を実行する効果は、以下を同時に設定することと同じです:

SET character_set_client='utf8'; 
SET character_set_connection='utf8'; 
SET character_set_results='utf8';

2. テスト データベースのエンコード形式を確認します:

mysql> show create database test; 
+------------+------------------------------------------------------------------------------------------------+ 
| Database | Create Database | 
+------------+------------------------------------------------------------------------------------------------+ 
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | 
+------------+------------------------------------------------------------------------------------------------+

3. yjdb データテーブルのエンコード形式を確認します:

mysql> show create table yjdb; 
| yjdb | CREATE TABLE `yjdb` ( 
`sn` int(5) NOT NULL AUTO_INCREMENT, 
`type` varchar(10) NOT NULL, 
`brc` varchar(6) NOT NULL, 
`teller` int(6) NOT NULL, 
`telname` varchar(10) NOT NULL, 
`date` int(10) NOT NULL, 
`count` int(6) NOT NULL, 
`back` int(10) NOT NULL, 
PRIMARY KEY (`sn`), 
UNIQUE KEY `sn` (`sn`), 
UNIQUE KEY `sn_2` (`sn`) 
) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |

2. インポートされたデータの中国語文字化けの問題を回避します

1: データを変換します。エンコード形式は utf-8 として保存されます。

デフォルトのエンコードを utf8 に設定します。

set names utf8 ;

データベース db_name をデフォルトで utf8 に設定します:

ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

テーブル tb_name のデフォルトのエンコーディングを utf8 に設定します:

ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

インポート:

LOAD DATA LOCAL INFILE 'C:\utf8.txt' INTO TABLE yjdb;

2:データ エンコード形式を ansi (例: GBK または GB2312)

デフォルトのエンコードを gbk に設定します:

set names gbk;

Setデータベース db_name のデフォルトのエンコーディングを gbk に設定します:

ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

テーブル tb_name のデフォルトのエンコーディングを gbk に設定します:

ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

インポート:

LOAD DATA LOCAL INFILE 'C:\gbk.txt' INTO TABLE yjdb;

注: 1. gbk をインポートしないでください。 UTF8、および gbk には UTF8 をインポートしません。

2.dos UTF8 の表示はサポートされていません。

3. Webページの文字化け問題を解決します

Web サイトのエンコードを、世界中のすべての文字と互換性のある utf-8 に設定します。

Web サイトが長期間運営されており、古いデータが多く、簡体字中国語の設定を変更できない場合は、ページのエンコードを GBK に設定することをお勧めします。 GBK と GB2312 は次のとおりです。 GBK GB2312 よりも多くの文字を表示できます。簡略化されたコードで繁体字を表示するには、GBK のみを使用できます。

1. /etc/my.cnf を編集し、[mysql] セクションにdefault_character_set=utf8 を追加します。

2. 接続 URL を記述するときに、?useUnicode を追加します。 =true&characterEncoding=utf-8 パラメータ;

3. Web ページのコードに「set names utf8」または「set names gbk」コマンドを追加して、すべての接続コンテンツで utf8 または gbk を使用する必要があることを MySQL に伝えます。 ;

その他の関連チュートリアルについては、MySQL ビデオ チュートリアル

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