java oracle中文亂碼的解決方法:1、將讀到的字串s,則進行純手工轉碼,程式碼為【new String(s.getByte(A), B)】;2、使用druid對各種資料庫驅動做了一層統一的封裝,編碼轉換。
【相關學習推薦: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中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。