自定义函数Unicode编码转化为中文

编辑
  • 文档创建者:印然
  • 浏览次数:3161次
  • 编辑次数:9次
  • 最近更新:jiangsr 于 2019-03-13
  • 1. 描述

    数据库中保存的是如下形式的编码:%u5357%u4EAC-%u57CE%u5317希望最后展示出来的是对应的中文“南京-城北”

    FineReport提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数,但这些函数必须满足FineReport函数定义规则。

    2. 函数原理

    在FineReport中,每一个函数都被定义成一个类,这个类必须要实现Function这个接口,在运算的时候首先通过函数名反射取得这个类,然后调用它的run(Object[] agrs)方法。下面Ubm这个函数可以实现:

    3. 实现步骤

    3.1 编写自定义函数
    // 自定义函数Unicode编码转化为中文 
    package com.fr.function;  
    
    import com.fr.script.AbstractFunction;  
      
    public class Ubm extends AbstractFunction {  
        public Object run(Object[] args) {  
            String str = args[0].toString();  
            String st = "";  
            StringBuffer buffer = new StringBuffer();  
            while (str.length() > 0) {  
                if (str.startsWith("%u")) {  
                    st = str.substring(2, 6);  
                    char ch = (char) Integer.parseInt(String.valueOf(st), 16);  
                    buffer.append(new Character(ch).toString());  
                    str = str.substring(6);  
                } else {  
                    st = str.substring(0, str.indexOf("%u"));  
                    buffer.append(st);  
                    str = str.substring(st.length());  
                }  
            }  
            return buffer.toString();  
        }  
    }
    3.2 编译自定义函数
    将编译后的Ubm.class放到FineReport的安装目录WEB-INF下面的classes目录下,因为Ubm.java属于包com.fr.function,所以Ubm.class需要放到%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\function目录下。
    3.3 注册自定义函数
    生成该函数的类后需要在设计器中进行注册,才可以使用该函数。打开服务器|函数管理器选择刚刚定义好了Ubm类,如下图:

    3.4 使用自定义函数
    注册好自定义函数后,制作报表时便可直接使用了,使用方法与内置的函数是相同的。输入公式=Ubm("%u5357%u4EAC-%u57CE%u5317"),预览效果如下:



    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]