jdbc:oracle:thin方式连接 字符集为GBK的oracle数据库,读回来的中文字符串乱码的问题 一个后置解决方案

1 篇文章 0 订阅

前言:大体思路就是 读回来之后,先编码回去,再用服务端的字符集解码

写了个反射通用方法如下:

/**
     * 解决乱码问题  先用  iso-8859-1 编码  再用  GBK解码
     * @param o
     */
    private void convertIsoToGbk(Object o) throws IllegalAccessException, UnsupportedEncodingException {
        if (o == null){
            return;
        }
        Class<?> aClass = o.getClass();
        Field[] declaredFields = aClass.getDeclaredFields();
        for (Field f :  declaredFields){
            f.setAccessible(true);
            Object v = f.get(o);
            if (v instanceof String){
                String s = String.valueOf(v);
                byte[] bytes = s.getBytes("iso-8859-1");
                s = new String(bytes, Charset.forName("GBK"));
                f.set(o, s);
            }
        }
    }

这个可以解决我的问题,因为用到的地方不多,性能影响不大。

如果你还是乱码,考虑修改 编解码的 字符集为 你的 客户端解码字符集和Oracle服务端字符集。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值