|
mysql亂碼處理總結(jié):
(1)java中處理中文字符正常,在cmd client中顯示亂碼是字符集的問題.
(2)字段長度設(shè)置夠長,但插入中文字符時(shí)提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column錯(cuò)誤是字符集的問題.
(3)亂碼問題歸根到底是字符集的問題,那就從字符集設(shè)置方面考慮,不外乎下面幾個(gè)方面:server,client,database,connection,results.
-------------------------解決辦法----------------------
(1)修改 my.ini(MySQL Server Instance Configuration 文件)
# CLIENT SECTION
[client]
port=3306
[mysql]
default-character-set=gbk
# SERVER SECTION
[mysqld]
default-character-set=gbk
(2)修改data目錄中相應(yīng)數(shù)據(jù)庫目錄下的db.opt配置文件
default-character-set=gbk default-collation=gbk_chinese_ci
(3)數(shù)據(jù)庫連接串中指定字符集
URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk 注:在mysql4.1.0版 要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是沒有關(guān)系的!
(4)在創(chuàng)建數(shù)據(jù)庫時(shí)指定字符集
create database yourDB CHARACTER SET gbk;
(5)在dos命令上要設(shè)置
set names gbk
好了,經(jīng)過檢查上面四個(gè)方面的設(shè)置,應(yīng)該 OK 了!不會(huì)出現(xiàn)諸如 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等問題.
Mysql中文亂碼解決 原來常常在群里看到mysql的亂碼問題,但是由于本人一直在用oracle和sql server所以沒多在乎,昨天用了用mysql結(jié)果就遇到了傳說中的亂碼…..?,F(xiàn)在我們來講講mysql的亂碼問題。首先你進(jìn)入的你mysql 用show variables查看
 這里可以查看到你的字符集,character_set_server是服務(wù)器編碼?,F(xiàn)在我們默認(rèn)的是latin1要改變服務(wù)器的編碼必須重新啟動(dòng)服務(wù)器,我們先用mysqladmin –uroot shutdown關(guān)閉服務(wù)器,然后mysqld –C GBK啟動(dòng)服務(wù)器 –C是character_set_server的一個(gè)簡寫(可以也可以寫成mysqld –character_set_server gbk).這樣修改以后我們?cè)龠M(jìn)入mysql查看就會(huì)顯示:
 這樣我們就把服務(wù)器和數(shù)據(jù)庫的編碼改為了GBK。 現(xiàn)在我們就可以插入中文字符串了,但是為什么有時(shí)間還是會(huì)顯示 Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1 這是因?yàn)槟阒皇切薷牧薽ysql的服務(wù)器的字符編碼,并沒有修改已經(jīng)有數(shù)據(jù)庫的編碼,這時(shí)候你需要手動(dòng)的把data目錄下的數(shù)據(jù)庫中的db.opt中的編碼改為 default-character-set=gbk default-collation=gbk_chinese_ci 這樣修改以后你在重啟服務(wù)器就可以插入中文了。 但是這時(shí)候還有個(gè)問題就是在你應(yīng)用程序當(dāng)中顯示的是中文字符,但是在命令窗口還是亂碼。 這時(shí)候你注意我們上面圖中的character_set_client字符還是latin1當(dāng)然顯示的是亂碼咯喲。所以你進(jìn)入mysql客戶端程序的時(shí)候因該把客戶端默認(rèn)的編碼改為gbk才能顯示正常。 你可以在mysql里修改,也可以在登陸的時(shí)候mysql –uroot –default-character-set=gbk修改 如此以來就解決了中文問題了。 我剛開始的時(shí)候在程序中加入了一個(gè)characterEncoding變量(下圖),但是想來想去都覺得這個(gè)變量沒什么用,所以后來去掉也能顯示正常。 jdbc:mysql://127.0.0.1:3306/ee?characterEncoding=gbk"
總結(jié)下mysql的亂碼問題最好還是設(shè)置數(shù)據(jù)庫的時(shí)候就把服務(wù)器編碼和數(shù)據(jù)庫編碼都設(shè)置長gbk,還有就是注意查看系統(tǒng)變量。
|