まとめ--mysql中国語の文字化けしを解決する

5069 ワード

まず、mysqlの中国語の文字化けしの原因を分析します.
1、テーブルの作成時にlatinコードを使用した
2、接続データベースの符号化が指定されていない
3、書き込み時に文字化けしてしまった(この場合は自分でソースデータをチェックする必要がある)
 
解決方法のまとめ:
1.ライブラリの作成時にエンコーディングを指定します.
create database testdb default charset utf8 

2.ライブラリのエンコーディングを変更するには:
 ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

3.表の符号化を変更する:
ALTER TABLE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 

4.フィールドのエンコーディングを変更するには:
ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

MYSQLデータベースtablenameテーブルのddのフィールドコードをutf 8に変更
診断プロセス:
1、SHOW CREATE TABLE  testtable; テーブル作成文を使用して現在のテーブルのエンコーディングを表示ラテンlatinエンコーディングの場合は、
ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 

テーブルのエンコーディングの変更
2、再度show create tableコマンドを使用して表示し、表コード
現在のカラムのエンコーディングも正しくないことが判明した場合は、
ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

よりdd列の符号化を行う
3、正しい場合は、コードの接続方法が正しいかどうかを確認します.
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

ここではjava側の接続ですが、ここでは接続の符号化utf-8を指定しています.
ここまで来ればいいはず
4、システムのデフォルトコードを修正する
mysql> SHOW VARIABLES LIKE 'character%';

mysql> SET character_set_client = utf8 ; 
mysql> SET character_set_connection = utf8 ; 
mysql> SET character_set_database = utf8 ; 
mysql> SET character_set_results = utf8 ; 
mysql> SET character_set_server = utf8 ; 

mysql> SET collation_connection = utf8 ; 
mysql> SET collation_database = utf8 ; 
mysql> SET collation_server = utf8 ; 

 
 
参考記事:
1、http://www.2cto.com/database/201307/227538.html
2、http://zhidao.baidu.com/link?url=WtACC0jMIsOAk6eX6kJk8qjQhga28VgsYpNPY4Oc9sWH5fgU2OQm1An-IGiV4yZ-PE80VJ5ZB-YxrAVW3Jo8ua