MySQL中国語文字化けしの解決方法まとめ


PHPでMySQLデータベースに中国語を挿入すると、いったん現れたら???文字化けして、多くの学友は狂って、中国人として、あなたは中国语の汉字を文字化けして、それでは私は承知しないで、そこで私达は奔走して1つの大きいフォーラムの投稿の助けを求めます....
MySQLの中国语の文字化けして実はよくあるのもそんなにいくつかの问题で、処理してOKになって、ここでいくつかの解决方法を総括して、すべて私达がいつも出会ったので、みんなは対照的に问题を解决することができます
1、Db符号化フォーマットが正しくない
現在のデータベースの状況をstatusで表示
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
Connection id:        54
Current database:    mydbname
Current user:        root@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.5.32-0ubuntu0.12.04.1 (Ubuntu)
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:            5 hours 18 min 41 sec
Threads: 1  Questions: 182  Slow queries: 0  Opens: 225  Flush tables: 1  Open tables: 55  Queries per second avg: 0.009
--------------
赤いフォントが表示されている2行を見ることができます.問題を発見しましたね.DbとServerはlatin 1です.utf 8に設定すれば問題を解決できます.
これは、データベースを作成するときにエンコードを設定する必要があります.次に、エンコードを設定する例を示します.
CREATE  DATABASE  `mydbname`  CHARACTER SET  'utf8'  COLLATE 'utf8_general_ci';

データベースのエンコードが設定されたら、テーブルのエンコードも設定することを忘れないでください.
CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、ウェブコードの問題
この問題UncleTooは実は完全に理解していないで、同じGB 2312のプログラムで、時にはMySQLに挿入するのは正常な漢字で、時には文字化けして、私の解決方法はMySQLと対話する必要がある時プログラムの中でset names utf 8の命令を出して、もしあなたが彼のもっと良い方法があるならばいっしょに交流することができます.
3、データベースのデフォルト符号化を変更する
SHOW VARIABLES LIKE''characterを使用set_%''データベース文字セットの表示
mysql> SHOW VARIABLES LIKE ''character_set_%'';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir |/usr/share/mysql/charsets/|
+--------------------------+----------------------------+
この場合、latin 1符号化をutf 8に変更する必要があります.
見つけたiniファイル(#先頭はコメント部分)MySQLグループで変更
default-character-set=utf8
または、コマンドの変更を直接入力します.
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
以上の3つの文字化けしは最もよく見られるもので、初心者もよく出会うもので、ここで一緒に分かち合ってみんなにあげて、みんなに助けをもたらすことを望んでいます.
その他の中国語の文字化けしの問題UncleTooはしばらくまだ出会ったことがなくて、もしあなたは出会ってしかもとても良い解決方法があるならば、私達に教えて、そしてみんなに分かち合います
原文住所:http://www.uncletoo.com/html/mysql/666.html
MySQLテクノロジーの詳細は、ログインしてくださいhttp://www.uncletoo.com