idea讀取資料庫亂碼,Navicat正常(解決)
阿新 • • 發佈:2018-12-15
亂碼問題困擾了我2天,菜的摳腳。先說說問題吧(你如果不想看這些廢話就直接去下面解決),我先建立了資料庫,拷貝了sql語句執行之後,Navicat正常顯示,但是頁面顯示亂碼(其實是中文latin1編碼)。debug跟程序序,發現在hibernate讀取資料庫返回資料的時候就已經是亂碼了。
分析:①資料庫配置問題;
②程式碼出錯;
③ide工具配置出錯;
先看資料庫,發現我配置應該是沒有問題的,於是就是排查程式碼了這玩意,這裡坑的我哭容我之後再說。
程式碼無非是連線加上編碼,網上各種都試過了,無效。但是事後證明確實是正確的配置。下面附上我的配置
jdbcUrl= jdbc:mysql://127.0.0.1:3306/資料庫?useUnicode=true&characterEncoding=UTF-8
其他的平配置正常就可以了。
將hibernate列印的sql語句複製,在工具上執行,Navicat執行一點問題沒有,顯示也是中文。
之後以為是ide有問題換了eclipse,jdbc連線資料庫讀取資料發現老問題不行中文還是亂碼。
之後是懷疑idea工具出錯,附我修改完的配置
發現問題還在。沒辦法由於其他原因反正也想重新安裝新版本的資料庫就解除安裝mysql重灌了,發現問題還沒有解決。
最後用Navicat按F6出現本地mysq連線頁面試了試SHOW VARIABLES LIKE 'character%';發現編碼集竟然不對,沒看錯是的,就是不對。他是latin1編碼的。
解決:刪庫跑路,哦不刪庫重連線。我也不懂為什麼Navicat的連線方式會影響到資料庫的正常編碼。但是就是這麼神奇,刪掉就得連線重新連線本地資料庫之後F6,檢視字元編碼 SHOW VARIABLES LIKE 'character%'; 頁面如下
在連線,ok了。雖然問題解決了。還有個小疑問問什麼Navicat連線會造成資料庫編碼有問題?dea直接連線的明明是資料庫呀!望有大佬路過指點一下!!!!
總結:造成的原因可能是Navicat重灌直接使用以前配置好的連線。
有可能你真的配置好了,可能需要一點小小的刪除重連。