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 は Alibaba 自身が開発したドライバーで、実際にはさまざまなデータベース ドライバーを統合レイヤーにカプセル化し、ロギング、アラーム、エンコード変換などの機能を追加します。設定方法は次のとおりです。
<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 の 2 つのプロパティが含まれています。 Javaがデータを読み込んだ後、serverEncodingとclientEncodingが異なることが判明した場合、以下のエンコード変換が自動的に行われます。
new String(s.getByte(serverEncoding), clientEncoding)
3.weblade ibatis callback
ibatis コールバックの登録方法は以下の方法を採用しています。
<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 によって取得された文字列を次のように変換します:
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 中国語 Web サイトの他の関連記事を参照してください。