總結--解決 mysql 中文亂碼

首先分析一下致使mysql 中文亂碼的緣由:

一、建表時使用了latin 編碼html

二、鏈接數據庫的編碼沒有指定java

三、寫入時就已經亂碼(這種狀況須要本身檢查源數據了)mysql

 

解決方法總結:

1.建立庫時指定編碼:
create database testdb default charset utf8 

2.修改庫的編碼:sql

 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的字段編碼改可以該爲utf8url

診斷過程:

一、SHOW CREATE TABLE  testtable; 使用建表語句查看當前表的編碼若是是拉丁latin編碼,則能夠使用spa

ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 

進行更改表的編碼code

二、再次使用show create table 命令查看,表編碼server

若是發現當前列中編碼也不正確,那麼使用

ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

進行更扆dd這一列的編碼

三、若是仍是正確,那麼查看下你的代碼裏的鏈接方式是否正確

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

我這裏是java方面的鏈接,這裏指定了鏈接的編碼utf-8

到這裏應該就能夠了

四、修改系統默認編碼

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 ; 

 

 

參考文章:

一、http://www.2cto.com/database/201307/227538.html

二、http://zhidao.baidu.com/link?url=WtACC0jMIsOAk6eX6kJk8qjQhga28VgsYpNPY4Oc9sWH5fgU2OQm1An-IGiV4yZ-PE80VJ5ZB-YxrAVW3Jo8ua

相關文章
相關標籤/搜索