Oracle 数据库转码 US7ASCII ZHS16GBK
2016-04-07 23:23
393 查看
Oracle数据库编码一般是 ZHS16GBK,但是 遇到一个Oracle数据库是 US7ASCII编码,在显示中文的时候遇到了问题,出现乱码下面给出如下解决方式:
步骤一:读取编码的配置文件
步骤二:编码解码
步骤一:读取编码的配置文件
public class SystemConfig { private final static String PROPERTIES_NAME = "sysconfig.conf"; public static String getProperties(String configName) throws UtilException{ try{ PropertyResourceBundle prbConfig = (PropertyResourceBundle)PropertyResourceBundle.getBundle(PROPERTIES_NAME); return prbConfig.getString(configName); }catch(Exception e){ throw new UtilException(e,""); } } }
步骤二:编码解码
public class BeanCodingConvert { public final static int ISO2GBK = 1; public final static int GBK2ISO = 2; public BeanCodingConvert() { super(); } public static void ObjectConvert(List list,int encodeType) { if (list == null && !(list instanceof List)) { return; } for (int i = 0; i < list.size(); i++) { Object co = list.get(i); if(co instanceof Object[]) ObjectConvert((Object[])co, encodeType); else{ if(co instanceof String){ co = StringConvert((String)co, encodeType); list.set(i, co); }else{ ObjectConvert(co,encodeType); } } } } public static void ObjectConvert(Iterator iter,int encodeType) { if (iter == null && !(iter instanceof Iterator)) { return; } while (iter.hasNext()) { Object co = iter.next(); ObjectConvert(co,encodeType); } } public static void ObjectConvert(Object[] o,int encodeType) { for(int i = 0;i < o.length; i++){ if (o[i] instanceof String) o[i] = StringConvert((String)o[i],encodeType); } } public static void ObjectConvert(Object o,int encodeType) { try { Map map = BeanUtils.describe(o); Set keySet = map.keySet(); for (Iterator iter = keySet.iterator(); iter.hasNext();) { Object element = (Object) iter.next(); PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor( o, element.toString()); Class cl = desc.getPropertyType(); if (cl.equals(String.class)) { BeanUtils.setProperty(o, element.toString(), encodeType==ISO2GBK?ObjectCharacterConvertChinese(map.get(element)):ObjectCharacterConvertISO(map.get(element))); } } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } public static String StringConvert(String s,int encodeType){ String tmp = encodeType==ISO2GBK?ObjectCharacterConvertChinese(s):ObjectCharacterConvertISO(s); return tmp; } public static String[] StringConvert(String[] args, int encodeType){ for(int i=0; i<args.length; i++){ args[i] = StringConvert(args[i], encodeType); } return args; } private static String ObjectCharacterConvertChinese(Object value) { if (value == null && !(value instanceof String)) { return null; } try { String temp_p = (String) value; byte[] temp_t = temp_p.getBytes("ISO-8859-1"); String unicode = new String(temp_t, "gbk"); return unicode; } catch (UnsupportedEncodingException e) { return ""; } } private static String ObjectCharacterConvertISO(Object value) { if (value == null && !(value instanceof String)) { return null; } try { String temp_p = (String) value; byte[] temp_t = temp_p.getBytes("gbk"); String unicode = new String(temp_t, "ISO-8859-1"); return unicode; } catch (UnsupportedEncodingException e) { return ""; } } }
相关文章推荐
- oracle group by cast(timestamp field) issue
- Oracle SQLPlus 在连接时通常有四种方式
- Oracle:使用过程中的问题集锦
- Oracle:使用过程中的问题集锦
- oracle用cmd命令连接数据库
- Toad for Oracle 12.1下载地址
- Oracle 11gR2 + ASM + spfile (eng)
- 匿名存储过程块学习
- ORACLE中用rownum分页并排序的SQL语句
- oracle 删除重复记录
- oracle模糊查询语句使用示例
- Oracle中如何把表和索引放在不同的表空间里
- Windows 下DataGuard 搭建
- Oracle学习笔记(六)——Oracle表的基本查询
- oracle union 与 union all的区别
- oracle数据库归档日志文件管理常用命令
- oracle视图创建以及查询方式
- Oracle字符串分割Split(超简单一条sql解决)
- CentOS 6.3(x32)下安装Oracle 10g R2
- rman恢复Oracle数据库