mysql亂碼處理總結

 mysql亂碼處理總結:

      (1)java中處理中文字符正常,在cmd client中顯示亂碼是字符集的問題.

      (2)字段長度設置夠長,但插入中文字符時提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column錯誤是字符集的問題.

      (3)亂碼問題歸根到底是字符集的問題,那就從字符集設置方面考慮,不外乎下面幾個方面: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目錄中相應數據庫目錄下的db.opt配置文件

default-character-set=gbk
default-collation=gbk_chinese_ci

(3)數據庫連接串中指定字符集

URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk 注:在mysql4.1.0版 要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是沒有關係的!

(4)在創建數據庫時指定字符集

create database yourDB CHARACTER SET gbk;
(5)在dos命令上要設置
set names gbk

      好了,經過檢查上面四個方面的設置,應該 OK 了!不會出現諸如
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等問題.



Mysql中文亂碼解決
原來常常在羣裏看到mysql的亂碼問題,但是由於本人一直在用oracle和sql server所以沒多在乎,昨天用了用mysql結果就遇到了傳說中的亂碼…..。現在我們來講講mysql的亂碼問題。首先你進入的你mysql
用show variables查看

這裏可以查看到你的字符集,character_set_server是服務器編碼。現在我們默認的是latin1要改變服務器的編碼必須重新啓動服務器,我們先用mysqladmin –uroot shutdown關閉服務器,然後mysqld –C GBK啓動服務器 –C是character_set_server的一個簡寫(可以也可以寫成mysqld –character_set_server gbk).這樣修改以後我們再進入mysql查看就會顯示:

這樣我們就把服務器和數據庫的編碼改爲了GBK。
現在我們就可以插入中文字符串了,但是爲什麼有時間還是會顯示
Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1
這是因爲你只是修改了mysql的服務器的字符編碼,並沒有修改已經有數據庫的編碼,這時候你需要手動的把data目錄下的數據庫中的db.opt中的編碼改爲
default-character-set=gbk
default-collation=gbk_chinese_ci
這樣修改以後你在重啓服務器就可以插入中文了。
但是這時候還有個問題就是在你應用程序當中顯示的是中文字符,但是在命令窗口還是亂碼。
這時候你注意我們上面圖中的character_set_client字符還是latin1當然顯示的是亂碼咯喲。所以你進入mysql客戶端程序的時候因該把客戶端默認的編碼改爲gbk才能顯示正常。
你可以在mysql裏修改,也可以在登陸的時候mysql –uroot –default-character-set=gbk修改
如此以來就解決了中文問題了。
我剛開始的時候在程序中加入了一個characterEncoding變量(下圖),但是想來想去都覺得這個變量沒什麼用,所以後來去掉也能顯示正常。
jdbc:mysql://127.0.0.1:3306/ee?characterEncoding=gbk"

總結下mysql的亂碼問題最好還是設置數據庫的時候就把服務器編碼和數據庫編碼都設置長gbk,還有就是注意查看系統變量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章