`
jnwzping
  • 浏览: 17989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Pentaho5 Saiku 中文乱码

阅读更多
pentaho5 使用saiku作为UI,当schema使用中文,会出现乱码情况。是因为mondrian读取schema文件的时候编码错误,schema建议使用"UTF-8无BOM格式文件"。需修改一下源代码:
 
     一、修改mondrian.jar 包下的 mondrian.olap.Util.java 下的readVirtualFileAsString方法,如下:
    public static String readVirtualFileAsString(
        String catalogUrl)
        throws IOException
    {
        InputStream in = readVirtualFile(catalogUrl);
        try {
            final byte[] bytes = Util. readFully(in, 1024);
            final char[] chars = new char[bytes. length];
            for ( int i = 0; i < chars. length; i++) {
                chars[i] = ( char) bytes[i];
            }
            String str = new String(bytes,"gbk").replace("\ufeff" , "" );//加replace("\ufeff", "")是为了过滤"UTF-8无BOM格式文件"的开头
            return str;
        } finally {
            if (in != null) {
                in.close();
            }
        }
    }
 
 
     二、修改mondrian.jar 包下的 mondrian.rolap.RolapSchema.java 下的load() 方法:
     protected void load(String catalogUrl, String catalogStr) {
        try {
            final Parser xmlParser = XOMUtil.createDefaultParser();
 
            final DOMWrapper def;
            if (catalogStr == null) {
                InputStream in = null;
                try {
                      // TODO wanpUpdate 配置文件乱码问题
                    /*in = Util.readVirtualFile(catalogUrl);
                    def = xmlParser.parse(in);*/
                     def = xmlParser.parse(Util.readVirtualFileAsString(catalogUrl));
                } finally {
                    if (in != null) {
                        in.close();
                    }
                }
 
     以上为load()方法的部分代码,修改的时候请对比差异部分进行修改
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics