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.
[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!