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 安装目录下查找或者网上下载即可。

更多集成部署类问题请看:集成部署分类导航
* 数据库密码中含有特殊字符润乾应用部署时 xml 怎么处理
* 轻松实现报表集成
* linux 操作系统安装润乾报表
* 润乾报表权限管理机制
* tomcat8 部署润乾 v2018 完整过程