在mysql中,對應的表字段編碼通常默認為lartin1編碼,在本地客戶端顯示的時候看着是亂碼,但是通過mysql -u -p -h命令登錄后,select查詢到數據是正常的,通過jdbc或者php等去取回來的中文是亂碼;
也就是中文在mysql中是lartin1,到我們自己本地或者用navicat等select卻是亂碼,使用mysql內置函數來轉換一下
SELECT convert(unhex(hex(convert(name using latin1))) using utf8) as name FROM test
上面語句意思為,在表test中,字段name編碼為lartin1查詢后結果轉換為utf8編碼結果
ps(吐槽一下!!!):看到很多人還要通過jdbc查詢的時候又要set names lartin1,還要new String(rs.getString("SampleColumnName").getBytes("ISO-8859-1"), "UTF-8"),扯了一大堆,最后結果還是亂碼,有毛用,一個mysql內置函數就搞定了,理解起來也簡單