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