JDBC連接mysql處理中文時(shí)亂碼解決辦法詳解
JDBC連接mysql處理中文時(shí)亂碼解決辦法詳解
近日,整合的項(xiàng)目需要跟一個(gè)比較老版本的mysql服務(wù)器連接,使用navicat查看,發(fā)現(xiàn)此mysql服務(wù)器貌似沒有設(shè)置默認(rèn)編碼,而且從操作此mysql的部分php文件看,應(yīng)該是使用的gb2312的編碼,但是,直接使用jdbc操作,從庫(kù)中讀取出來(lái)的中文全都是亂碼。
一開始,使用類似entity.setDepartName(new String(rs.getString("hg").getBytes("gbk"), "utf-8"));的方式,試圖進(jìn)行強(qiáng)制的編碼轉(zhuǎn)換,結(jié)果失敗了,因?yàn)?,無(wú)論采用何種方式,轉(zhuǎn)出來(lái)的字符總是各種各樣的亂碼,只是每次亂的方式都不一樣。比較郁悶。而且,此項(xiàng)目由于使用的其他的產(chǎn)品,無(wú)法在其中再加額外的類似過(guò)濾器之類的東西,所以這個(gè)問(wèn)題不是很好處理。
使用navicat連接查詢,沒有問(wèn)題,因此,試著將某個(gè)表導(dǎo)出sql,查看DDL中是否有關(guān)于編碼的設(shè)置,結(jié)果讓我很失望,編碼這一塊直接沒寫。于是,將導(dǎo)出的sql文件修改擴(kuò)展名為html,使用IE打開,發(fā)現(xiàn)沒有亂碼,查看此時(shí)的編碼格式果然是“gb2312”,但是,使用java強(qiáng)制的轉(zhuǎn)碼已無(wú)濟(jì)于事。怎么辦呢?
而且,此項(xiàng)目已運(yùn)行多年,后期維護(hù)有些缺乏,my.ini文件也更是無(wú)法查看并修改的。
突然想起,mysql連接的時(shí)候可以加上參數(shù),并且有些參數(shù)是指定編碼的,這樣是不是可以解決問(wèn)題呢?
于是修改連接字符串(原值為:url="jdbc:mysql://192.168.18.254:3306/web_oa)為:
url="jdbc:mysql://192.168.18.254:3306/web_oa?useUnicode=true&characterEncoding=gbk"
重啟應(yīng)用,查看,OK!中文很正常。
問(wèn)題解決。
這種方式其實(shí)是在連接時(shí)指定使用gbk的編碼格式,從而避免客戶端與服務(wù)端各自使用自己默認(rèn)的編碼格式交互,只要配置合適,不會(huì)出現(xiàn)亂碼問(wèn)題。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
mysql無(wú)法成功啟動(dòng)服務(wù)的解決方法(通俗易懂!)
Mysql是我們使用數(shù)據(jù)庫(kù)時(shí)需要用到的服務(wù),但是在使用過(guò)程中常常遇到服務(wù)無(wú)法啟動(dòng)的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于mysql無(wú)法成功啟動(dòng)服務(wù)的解決方法,需要的朋友可以參考下2023-02-02mysql中取系統(tǒng)當(dāng)前時(shí)間,當(dāng)前日期方便查詢判定的代碼
今天在寫一段查詢語(yǔ)句的時(shí)候,需要判定結(jié)束日期是不是大于當(dāng)前日期,一般情況下都是通過(guò)php判定日期,然后查詢。2011-12-12MySQL 啟動(dòng)報(bào)錯(cuò):File ./mysql-bin.index not found (Errcode: 13)
這篇文章主要介紹了MySQL 啟動(dòng)報(bào)錯(cuò):File ./mysql-bin.index not found (Errcode: 13)的解決方法,需要的朋友可以參考下2014-07-07mysql 服務(wù)意外停止1067錯(cuò)誤解決辦法小結(jié)
今天在配置服務(wù)器時(shí)安裝mysql5.5總是無(wú)法安裝,查看日志錯(cuò)誤提示為1067錯(cuò)誤,下面來(lái)看我的解決辦法2012-11-11MySQL中用戶授權(quán)以及刪除授權(quán)的方法
這篇文章主要介紹了MySQL中用戶授權(quán)以及刪除授權(quán)的方法的相關(guān)資料,需要的朋友可以參考下2015-12-12MySQL之xtrabackup備份恢復(fù)的實(shí)現(xiàn)
本文主要介紹了MySQL之xtrabackup備份恢復(fù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02MYSQL數(shù)據(jù)庫(kù)中的現(xiàn)有表增加新字段(列)
MYSQL 增加新字段的sql語(yǔ)句,需要的朋友可以參考下。2010-05-05MySQL 查詢結(jié)果以百分比顯示簡(jiǎn)單實(shí)現(xiàn)
用到了MySQL字符串處理中的兩個(gè)函數(shù)concat()和left()實(shí)現(xiàn)查詢結(jié)果以百分比顯示,具體示例代碼如下,感興趣的朋友可以學(xué)習(xí)下2013-07-07MySQL 字符串截取相關(guān)函數(shù)小結(jié)
本文是腳本之家小編給大家收藏整理的關(guān)于MySQL 字符串截取相關(guān)函數(shù)小結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04