關于mysql數(shù)據(jù)庫連接編碼問題
前幾天使用springboot做一個數(shù)據(jù)庫查詢功能,發(fā)現(xiàn)使用中文就無法查到數(shù)據(jù),經(jīng)過測試SQL語句是沒有問題的,但是就是查詢不到數(shù)據(jù),一直顯示為null。
后來,我靈機一動嘗試了一下查詢參數(shù)改為英文,顯示出查詢結果是正常的。這就說明了是編碼的問題。
起初我以為是springboot的編碼問題,但是我嘗試了之后發(fā)現(xiàn)是正常的,后來經(jīng)過搜索查詢發(fā)現(xiàn)是JDBC的url沒有指定編碼,所以mysql服務端使用了默認的編碼來解碼導致了錯誤。
查詢數(shù)據(jù)經(jīng)過網(wǎng)絡傳輸,網(wǎng)絡上的數(shù)據(jù)都是字節(jié)了,如果不指定編碼的話,只能使用默認的編碼,但是默認的編碼和數(shù)據(jù)庫表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫中執(zhí)行時已經(jīng)是亂碼了(只不過我們不知道),因此導致了錯誤。
不過如果數(shù)據(jù)庫開啟了日志功能,應該是可以看到執(zhí)行過的sql語句的,這也說明了日志對于排錯的重要性。
解決辦法:
在 jdbcurl 后面添加:?useUnicode=true&characterEncoding=utf-8
注意:這個 utf-8 是數(shù)據(jù)庫創(chuàng)建時的編碼。如果使用的是其它編碼,要對應修改。
如果是文本配置文件的話:使用 & 符號 如果是xml配置文件的話:使用 & 的轉義字符 &
可以參考一下這篇文章:關于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題
到此這篇關于關于mysql數(shù)據(jù)庫連接編碼問題的文章就介紹到這了,更多相關mysql數(shù)據(jù)庫編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
spark rdd轉dataframe 寫入mysql的實例講解
今天小編就為大家分享一篇spark rdd轉dataframe 寫入mysql的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06