Heim  >  Artikel  >  Java  >  Wie man mit verstümmelten chinesischen Schriftzeichen in Java Oracle umgeht

Wie man mit verstümmelten chinesischen Schriftzeichen in Java Oracle umgeht

coldplay.xixi
coldplay.xixiOriginal
2020-08-17 13:49:252646Durchsuche

Lösung für den verstümmelten Code von Java Oracle: 1. Transkodieren Sie die gelesenen Strings manuell, der Code lautet [new String(s.getByte(A), B)] 2. Verwenden Sie druid Eine einheitliche Kapselungs- und Codierungsebene Für verschiedene Datenbanktreiber wurde eine Konvertierung durchgeführt.

Wie man mit verstümmelten chinesischen Schriftzeichen in Java Oracle umgeht

[Verwandte Lernempfehlungen: Java-Grundlagen-Tutorial]

Lösung für verstümmelten Java-Oracle-Chinesischcode:

Transkodierungsmethode

Wenn Java beim Lesen von Oracle auf chinesische verstümmelte Zeichen stößt, müssen wir eine Transkodierung durchführen. Es gibt viele Transkodierungsmethoden. Die folgenden sind mir aufgefallen.

1. Rein manuelle Transkodierung

Transkodieren Sie die gelesenen Strings, wie zum Beispiel: new String(s.getByte(A), B)

2 ist ein von Alibaba selbst entwickelter Treiber. Er bietet tatsächlich ein einheitliches Paket für verschiedene Datenbanktreiber und fügt Funktionen wie Protokollierung, Alarme und Codekonvertierung hinzu. Die Konfigurationsmethode lautet wie folgt:

<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>

Die ConnectionProperties enthalten zwei Eigenschaften: serverEncoding und clientEncoding. Nachdem Java die Daten gelesen hat und festgestellt wird, dass serverEncoding und clientEncoding unterschiedlich sind, wird die folgende Codierungskonvertierung automatisch durchgeführt.

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

3. Weblade-Ibatis-Rückruf

Es verwendet die folgende Methode, um einen Ibatis-Rückruf zu registrieren.

<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>

bewirkt, dass das Programm den von ibatis erhaltenen String standardmäßig wie folgt konvertiert:

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

Die Bibliothek eines Drittanbieters wird wie folgt eingeführt:

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

Ibatis-Rückruf ist ausgeblendet Der Prozess der Codierung Das Problem besteht jedoch darin, dass sie sich auf alle Datenquellen im Projekt auswirkt. Dies macht es unmöglich, Datenquellen, die eine Transkodierung erfordern, und solche, die keine Transkodierung erfordern, gleichzeitig transparent zu unterstützen.

Verwandte Empfehlungen: Programmiervideokurs

Das obige ist der detaillierte Inhalt vonWie man mit verstümmelten chinesischen Schriftzeichen in Java Oracle umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn