MySQL中文亂碼具體解決方案
以下的文章主要介紹的是MySQL中文亂碼的解決,MySQL中文亂碼在實(shí)際的應(yīng)用中是經(jīng)常出現(xiàn),導(dǎo)致實(shí)際的運(yùn)行中產(chǎn)生很多的不便,以下的文章就是介紹MySQL中文亂碼的解決方案。望你能有所收獲。
原來(lái)常常在群里看到MySQL的亂碼問(wèn)題,但是由于本人一直在用oracle和sql server所以沒(méi)多在乎,昨天用了用MySQL結(jié)果就遇到了傳說(shuō)中的亂碼…..?,F(xiàn)在我們來(lái)講講MySQL的亂碼問(wèn)題。首先你進(jìn)入的你MySQL
用show variables查看
這里可以查看到你的字符集,character_set_server是服務(wù)器編碼。現(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è)簡(jiǎn)寫(xiě)(可以也可以寫(xiě)成MySQLd –character_set_server gbk).這樣修改以后我們?cè)龠M(jìn)入MySQL查看就會(huì)顯示:
這樣我們就把服務(wù)器和數(shù)據(jù)庫(kù)的編碼改為了GBK。
現(xiàn)在我們就可以插入中文字符串了,但是為什么有時(shí)間還是會(huì)顯示
- Exception in thread "main" com.MySQL.jdbc.MySQLDataTruncation:
Data truncation: Data too long for column 'name' at row 1
MySQL中文亂碼解決中出現(xiàn)上述情況,這是因?yàn)槟阒皇切薷牧薓ySQL的服務(wù)器的字符編碼,并沒(méi)有修改已經(jīng)有數(shù)據(jù)庫(kù)的編碼,這時(shí)候你需要手動(dòng)的把data目錄下的數(shù)據(jù)庫(kù)中的db.opt中的編碼改為
- default-character-set=gbk
- default-collation=gbk_chinese_ci
這樣修改以后你在重啟服務(wù)器就可以插入中文了。
但是這時(shí)候還有個(gè)問(wèn)題就是在你應(yīng)用程序當(dāng)中顯示的是中文字符,但是在命令窗口還是亂碼。
這時(shí)候你注意我們上面圖中的character_set_client字符還是latin1當(dāng)然顯示的是亂碼咯喲。所以你進(jìn)入MySQL客戶(hù)端程序的時(shí)候因該把客戶(hù)端默認(rèn)的編碼改為gbk才能顯示正常。
你可以在MySQL里修改,也可以在登陸的時(shí)候MySQL –uroot –default-character-set=gbk修改
如此以來(lái)就解決了MySQL中文亂碼解決了。
【編輯推薦】