ホームページ  >  記事  >  データベース  >  Mysql の中国語文字化け問題の完璧な解決策

Mysql の中国語文字化け問題の完璧な解決策

高洛峰
高洛峰オリジナル
2016-12-02 14:45:261071ブラウズ

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 デフォルト '',
`UserID` varchar(40) NOT NULL デフォルト '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

これら 3 つの設定が完了すると、基本的に問題はありません。データベースとテーブルのエンコード形式を構築するときに同じものが使用されます。
ただし、すでにライブラリとテーブルを構築している場合は、次の方法でそれらをクエリできます。
1. デフォルトのエンコード形式を表示します:
mysql> "%char%";
+--------------------------+ のような変数を表示します。 ----------+
| 値 |
+--------------- +--------------+
| 文字セット接続 |
| 文字セットファイルシステム |
| | utf8 |
| utf8 |
+---------------+----------- -+
注: 前の 2 つを決定するには、set names utf8 と set names gbk を使用してデフォルトのエンコード形式を設定できます

SET NAMES utf8 を実行する効果は、以下を同時に設定することと同等です。 Character_set_client='utf8';
SET Character_set_connection='utf8';

SET Character_set_results='utf8';


2. テスト データベースのエンコード形式を表示します:
mysql> show create database test;
+----- ----------+- -------------------------------------- ---------------------------------------------------- ----+

| データベースの作成 |

+---------------------+-------------- ------------------ -------------------------------- ------------------ ---------------+
| データベースの作成 `test` /*!40100 デフォルトの文字セットgbk */ |
+-----------+ ----------------------------- ------------------- ------------------------------- -------------------+

3 .yjdb データベースのエンコード形式を表示します:
mysql> show 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,
主キー (`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;
データベース db_name のデフォルトのエンコードを gbk に設定します:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Set table tb_name のデフォルトのエンコーディングを gbk:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Import:
LOAD DATA LOCAL INFILE 'C:\gbk.tx t' INTO TABLE yjdb;

注: 1. インポートしないでください。 UTF8 を gbk にインポートし、gbk を UTF8 にインポートしないでください。
2. UTF8 の表示は、Web ページの文字化けの問題を解決します

Web サイトのエンコーディングを utf-8 に設定します。世界中のすべてのキャラクターと互換性があります。

ウェブサイトが長期間運営されており、古いデータが多く、簡体字中国語の設定を変更できなくなった場合は、ページのエンコードを GBK に設定することをお勧めします。 GBK と GB2312 の違いは、GBK です。 GB2312 よりも多くの文字を表示できます。簡略化されたコードで繁体字を表示するには、GBK のみを使用できます。
1. /etc/my.cnf を編集し、default_character_set=utf8 を [mysql] セクションに追加します。
3. 接続 URL を作成するときに、?useUnicode=true&characterEncoding=utf-8 パラメータを追加します。ページ コード 前の「set names utf8」または「set names gbk」コマンドは、すべての接続コンテンツで
utf8 または gbk;



を使用する必要があることを MySQL に伝えます。

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