作為一個(gè)開發(fā)人員,mysql亂碼想必是一個(gè)很常見的問題,那么如何去解決呢史辙?
首先菌仁,問題有可能出現(xiàn)在數(shù)據(jù)庫上面浩习,mysql 數(shù)據(jù)庫默認(rèn)是 latin1字符集:
由于表示latin1字符集 如果varchar字段沒有顯示指定的話也是latin1字符集:
所以我們創(chuàng)建表的時(shí)候要把表設(shè)置成utf8,如果開始把表設(shè)置成utf8后济丘,那么這個(gè)表里面的varchar 字段一般都是utf8格式的:
由于表是utf8格式編碼谱秽,所以默認(rèn)的varchar字段也是utf8:
這里有個(gè)問題需要注意,就是如果開始你的數(shù)據(jù)庫編碼是latin1摹迷,然后你插入了一些中文數(shù)據(jù)疟赊,出現(xiàn)亂碼,然后此時(shí)你把數(shù)據(jù)庫和對應(yīng)字段都設(shè)置成了utf8峡碉,那么之前的亂碼是還存在的近哟,之后的你再插入數(shù)據(jù)的時(shí)候,就不會(huì)出現(xiàn)亂碼了:
這個(gè)需要注意一下鲫寄,因此吉执,在創(chuàng)建數(shù)據(jù)庫 和表的時(shí)候就應(yīng)該把字符集設(shè)置成utf8,這樣可以減少以后的麻煩地来。
如果你上都弄好了戳玫,還是沒有解決的話,可能是應(yīng)用程序那邊的數(shù)據(jù)庫驅(qū)動(dòng)沒有設(shè)置編碼
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
加上一下編碼設(shè)置就可以了
如果以上都做過了還是有問題的話未斑,執(zhí)行以下命令:
show variables like 'character%';
然后看看是不是有問題咕宿,如果有問題的話,執(zhí)行一下命令:
set names utf8;