总结
豆包 AI 助手文章总结
首页 > Java > java教程 > 正文

java oracle中文乱码怎么办

coldplay.xixi
发布: 2020-08-17 13:49:25
原创
2871人浏览过
java oracle中文乱码的解决方法:1、将读到的字符串s,则进行纯手工转码,代码为【new String(s.getByte(A), B)】;2、使用druid对各种数据库驱动做了一层统一的封装,编码转换。

java oracle中文乱码怎么办

【相关学习推荐:java基础教程

java oracle中文乱码的解决方法:

转码方法

        当Java读Oracle遇到中文乱码时,我们就需要进行转码。转码的方法很多,我接触过的有以下几种。

立即学习Java免费学习笔记(深入)”;

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中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号