標籤:
首先分析一下導致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的欄位編碼改能夠該為utf8
診斷過程:
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
總結--解決 mysql 中文亂碼