oracle数据库we8dec字符集中文乱码问题

Oracle数据库字符集为WE8DEC,报表直接从数据库中取数时,中文乱码。

解决办法:可以使用报表的自定义函数或者集算器的自定义函数对中文进行转码操作。

集算器中脚本:

A3中表达式

=A2.run(invoke(toWe8.toWe8,MAXDESC):MAXDESC,invoke(toWe8.toWe8,MINDESC):MINDESC)

表达式说明:

因为数据库中用的字符集是WE8DEC,通过jdbc取数时会乱码,需要进行一次转码,这里通过自定义函数实现,自定义函数类为toWe8.class,集算器中调用方式为:invoke(toWe8.toWe8,”aaaa”)

在A4中使用集算器中的run函数,结合新增的自定义函数,对原有数据进行转码,此处对两个字段转码,分别为:MAXDESC,MINDESC

点击执行,此时点击A4单元格,在右侧可看到转码后的结果。

PS:放置jar包和class文件时,如果集算器在启动状态,需要重启集算器。

函数源码:

importjava.io.UnsupportedEncodingException;

public class toWe8 {

 public static String toWe8(String str) {

                   Stringwe8="";

                   try{

                            if(str==""|| str==null){

                                     return"";                           

                            }

                            else{

                                     we8= new String(str.getBytes("X-ORACLE-WE8MSWIN1252"),"GB2312");

                            }

                   }catch (UnsupportedEncodingException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

   return we8;

  }

}

注:要使用该功能,要使用oracle的jar包:orai18n.jar,在oracle安装目录下查找或者网上下载即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值