>  기사  >  Java  >  Java oracle에서 잘못된 한자를 처리하는 방법

Java oracle에서 잘못된 한자를 처리하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-08-17 13:49:252663검색

Java oracle 중국어 왜곡 코드에 대한 솔루션: 1. 읽은 문자열을 수동으로 트랜스코딩합니다. 코드는 [new String(s.getByte(A), B)]입니다. 2. druid를 사용하여 이 데이터베이스 드라이버에는 통합 레이어가 있습니다. 캡슐화 및 인코딩 변환.

Java oracle에서 잘못된 한자를 처리하는 방법

【관련 학습 권장사항: java 기본 튜토리얼

java oracle 중국어 깨기 솔루션:

트랜스코딩 방법

Java가 Oracle을 읽고 중국어 깨기 코드를 발견하면 트랜스코딩이 필요합니다. 트랜스코딩 방법에는 여러 가지가 있는데, 제가 본 방법은 다음과 같습니다.

1. 순전히 수동 트랜스코딩

다음과 같이 읽은 문자열을 트랜스코딩합니다. 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이라는 두 가지 속성이 포함되어 있습니다. Java가 데이터를 읽은 후 serverEncoding과 clientEncoding이 다른 것으로 확인되면 다음 인코딩 변환이 자동으로 수행됩니다.

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

3. webblade ibatis 콜백

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 콜백은 인코딩 변환 프로세스를 숨기지만 문제는 프로젝트의 모든 데이터 소스에 유효합니다. 이로 인해 트랜스코딩이 필요한 데이터 소스와 트랜스코딩이 필요하지 않은 데이터 소스를 동시에 투명하게 지원할 수 없습니다.

관련 추천: 프로그래밍 비디오 강좌

위 내용은 Java oracle에서 잘못된 한자를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.