java oracle中文亂碼的解決方法:1、將讀到的字符串s,則進行純手工轉(zhuǎn)碼,代碼為【new String(s.getByte(A), B)】;2、使用druid對各種數(shù)據(jù)庫驅(qū)動做了一層統(tǒng)一的封裝,編碼轉(zhuǎn)換。
創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為福州企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),福州網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
【相關(guān)學習推薦:java基礎(chǔ)教程】
java oracle中文亂碼的解決方法:
轉(zhuǎn)碼方法
當Java讀Oracle遇到中文亂碼時,我們就需要進行轉(zhuǎn)碼。轉(zhuǎn)碼的方法很多,我接觸過的有以下幾種。
1、純手工轉(zhuǎn)碼
將讀到的字符串s進行轉(zhuǎn)碼,如:new String(s.getByte(A), B)
2、Druid
druid是阿里巴巴自己開發(fā)的一個驅(qū)動,它其實是對各種數(shù)據(jù)庫驅(qū)動做了一層統(tǒng)一的封裝,添加日志、告警、編碼轉(zhuǎn)換等功能。配置方式如下:
serverEncoding=ISO-8859-1;clientEncoding=GBK;defaultRowPrefetch=50;bigStringTryClob=true
其中connectionProperties中包含serverEncoding、clientEncoding兩個屬性。在Java讀取到數(shù)據(jù)后,如果發(fā)現(xiàn)serverEncoding、clientEncoding不同,則會自動進行如下編碼轉(zhuǎn)換。
new String(s.getByte(serverEncoding), clientEncoding)
3、weblade ibatis callback
它采用了如下注冊ibatis callback的方式。
使得在默認情況下,程序會把ibatis獲取到的String進行如下編碼轉(zhuǎn)換:
new String(s.getByte(“ISO-8859-1”), “GBK”)
該二方庫引入的方式如下:
com.alibaba.asc.shared weblade.core.ibatisext 1.2.0-SNAPSHOT
Ibatis callback隱藏了編碼轉(zhuǎn)換的過程,但問題是它對項目中所有的數(shù)據(jù)源生效。使得無法同時透明地支持需要轉(zhuǎn)碼和無需轉(zhuǎn)碼的數(shù)據(jù)源。
相關(guān)推薦:編程視頻課程