首頁  >  文章  >  Java  >  java oracle中文亂碼怎麼辦

java oracle中文亂碼怎麼辦

coldplay.xixi
coldplay.xixi原創
2020-08-17 13:49:252664瀏覽

java oracle中文亂碼的解決方法:1、將讀到的字串s,則進行純手工轉碼,程式碼為【new String(s.getByte(A), B)】;2、使用druid對各種資料庫驅動做了一層統一的封裝,編碼轉換。

java oracle中文亂碼怎麼辦

【相關學習推薦:java基礎教學

java oracle中文亂碼的解決方法:

轉碼方法

        當Java讀取Oracle遇到中文亂碼時,我們就需要進行轉碼。轉碼的方法很多,我接觸過的有以下幾種。

1、純手轉碼

        將所讀到的字串s進行轉碼,如:new String(s.getByte(A), B)

2 、Druid

        druid是阿里巴巴自己開發的一個驅動,它其實是對各種資料庫驅動做了一層統一的封裝,添加日誌、告警、編碼轉換等功能。設定方式如下:

<bean id="opensqlDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.alibaba.china.jdbc.SimpleDriver" />
<property name="url" value="jdbc:oracle:thin:@10.20.130.210:1521:dwtest" />
<property name="username" value="etl" />
<property name="password" value="etl" />
<property name="connectionProperties"><value>serverEncoding=ISO-8859-1;clientEncoding=GBK;defaultRowPrefetch=50;bigStringTryClob=true</value></property>
</bean>

其中connectionProperties中包含serverEncoding、clientEncoding兩個屬性。在Java讀取到資料後,如果發現serverEncoding、clientEncoding不同,則會自動進行以下編碼轉換。

new String(s.getByte(serverEncoding), clientEncoding)

3、weblade ibatis callback

它採用如下註冊ibatis callback的方式。

<bean id="sqlMapExecutorDelegate"
class="com.asc.alibaba.dao.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate">
<property name="mappedStatementStrategy" ref="mappedStatementStrategy" />
<property name="handlerList">
<list>
<ref bean="stringHandler" />
<!-- <ref bean="objectHandler" />-->
</list>
</property>
</bean>
<bean id="stringHandler" class="com.asc.alibaba.dao.ibatis.handler.TypeHandlerAdapter">
<property name="javaType" value="java.lang.String" />
<property name="handlerCallback" ref="stringTypeHandlerCallback" />
</bean>

使得在預設情況下,程式會把ibatis取得到的String進行如下編碼轉換:

new String(s.getByte(“ISO-8859-1”), “GBK”)

該二方庫引入的方式如下:

<dependency>
<groupId>com.alibaba.asc.shared</groupId>
<artifactId>weblade.core.ibatisext</artifactId>
<version>1.2.0-SNAPSHOT</version>
</dependency>

Ibatis callback隱藏了編碼轉換的過程,但問題是它對專案中所有的資料來源生效。使得無法同時透明地支援需要轉碼和無需轉碼的資料來源。

相關推薦:程式設計影片課程

以上是java oracle中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn