java解决对US7ASCII编码的ORACLE数据库数据解码
一、问题描述:
1、oracle数据库中的数据是以US7ASCII编码集保存的,用程序读取时中文出现乱码现象。
2、系统中设置的NLS_LANG变量对程序数据库操作没有影响,只对plsql dev和navicat这些客户端有用。
二、问题分析:
1、程序默认使用的编码是系统的默认编码,但开发工具使用的编码集可能与系统不同,JDBC使用的编码与代码字符集一致,如下的GBK就是开发工具的编码。成功。
三、解决办法:
1、对单个字段使用String的方法在转码后构造一个新字段。
newString(filed.getBytes("ISO-8859-1"),"GBK")
2、使用指定字符集对所有字符进行解码。输入LIST对象、解码集和编码集。
/**
*对数据库返回数据进行集体解码
* @param obj
* @param origCode
* @param desCode
* @return
*/
public List decodeObj(Object obj,StringorigCode,String desCode){
if(obj instanceof List){
List objList= (List) obj;
for(ObjecttempObj:objList){
PropertyDescriptor[] properties =PropertyUtils.getPropertyDescriptors(tempObj.getClass());
for(int i=0;i<properties.length;i++){
String name = properties[i].getName();
if("class".equals(name)){
continue;
}
try {
Class classType =PropertyUtils.getPropertyType(tempObj, name);
if(classType.equals(String.class) //对所有string类型进行转码
&&PropertyUtils.isReadable(tempObj, name)
&&PropertyUtils.isWriteable(tempObj, name)){
Object value =PropertyUtils.getSimpleProperty(tempObj, name);
if(value!=null){
try {
PropertyUtils.setProperty(tempObj,name, new String(((String)value).getBytes(origCode),desCode));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
} catch (IllegalAccessException | InvocationTargetException
| NoSuchMethodException e) {
//根据对象反射,不会出现错误
}
}
}
}
return (List) obj;
}
3、使用指定字符集对所有输入字符集进行编码,顺序和编码相反。
/**
*对数据库的条件参数进行编码。
* @param map
* @param origCode
* @param desCode
* @return
*/
public Map<String, Object>encode(Map<String, Object> map,String origCode,String desCode){
if(map.size()>0){
for(Stringkey:map.keySet()){
Object value= map.get(key);
if(valueinstanceof String){
if(value!=null){
try {
map.put(key, newString(((String)value).getBytes(origCode),desCode));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
}
return map;
}
4、LIST输出的时候调用decodeObj,条件输入的时就汉字就调用encode.
5、PropertyUtils来至org.apache.commons.beanutils.PropertyUtils;
java解决对US7ASCII编码的ORACLE数据库数据解码相关推荐
- C# 操作American_America.US7ASCII编码的Oracle数据库出现乱码的问题。
最近一个项目,需要连接Oracle数据库, 使用Oracle.ManagedDataAccess库连接,出现中文乱码, 排查发现,Oracle服务端是采用American_America.US7ASC ...
- C#访问US7ASCII编码的oracle数据库
前段时间node中调用oracle数据库乱码,oracle数据库是用的US7ASCII编码的,而node-oracledb模块调用oracle数据库时始终使用了AL32UTF8字符集,导致不管怎么设置 ...
- Java案例:利用JDBC连接Oracle数据库
Java案例:利用JDBC连接Oracle数据库 一.准备工作 1.启动SQL Developer,设置java.exe路径 2.在Oracle SQL Developer里,新建数据库连接 连接名: ...
- Oracle数据库数据查询语句示例(包含大部分常用语句)
Oracle数据库数据查询语句示例(包含大部分常用语句) 目标 本文用到的关系模式 语句示例 1.在创建的s,p,j和spj表中完成以下查询 (1)查询零件重量在10-20之间(包括10和20)的零件 ...
- oracle数据库数据导入导出步骤(入门)
oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/i ...
- cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...
正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!! ...
- oracle临时表经常被锁_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤
正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!! ...
- 误删除 Oracle 数据库数据的恢复方法
学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失. 今天主要以oracle数据库为例,介绍关于表中数据删除的解决办法.(不考虑全 ...
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
Oracle 数据库数据排名函数: rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名) ...
最新文章
- linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算
- 在Visual Studio设置隐藏cmd,GTK程序有效
- 计算机无法显示移动硬盘,移动硬盘在我的电脑中不显示了 怎么处理?
- SqlServer 2014还原数据库时提示:无法在已有的上还原文件,请重新发出RESTORE语句,用WITH REPLACE来覆盖原先存在的文件
- 综合缴费系统|综合缴费|话费充值
- arm926ej_EJB超时策略:它们如何提供帮助?
- maven 对于java的要求_如何在Maven中表达对Java EE功能的依赖以过渡到Java 9?
- python中numpy matplotlib绘图教程_利用numpy+matplotlib绘图的基本操作教程
- ArcGIS 拓扑验证与编辑共享要素
- 火狐浏览器设置url编码_URL编码与解码
- magisk安装失败_俄罗斯官改MIUI MiRoom安装刷入教程
- C#中如何调出工具箱
- Strust2 success sucess
- OpenGL学习二十九:模板缓冲区与模板测试
- 云计算,经济危机下爆发
- Express WEB 应用开发框架-姜威-专题视频课程
- 写给大数据初级开发者或准备转行大数据的人
- 地图大量数据查询与渲染——bug及解决方案
- 你知道吗?CAD电子目录≠产品CAD库
- SAP 教程之 04 在 SAP 中创建 IDoc 类型 [WE30]
热门文章
- 正态分布-python建模
- 怎么用dd命令测试U盘读写速度
- vue服务端渲染 MySQL_Vue 服务端渲染(SSR)
- rm 输入/输出错误
- awx文件解析_9awx.com
- [转]关闭Google安全搜索,实现无限制搜索
- python将电视剧按收视率进行排序_怎么用编程语言分析电影收视率_编程语言_python_python教程_课课家...
- HTML+CSS抗疫期末大作业:抗疫网站设计——新冠抗疫(4页) 学生DW网页设计作业成品 web课程设计网页规划与设计...
- 学术-物理-维空间:零维空间
- JDBC四:操作Blob类型字段