saiku2.x配置mondrian3.x中Schema中文乱码问题解决方案
saiku2 mondrian3 OpenSource OpenBI    2017-07-19 23:28:23    849   
lightingfire   saiku2 mondrian3 OpenSource OpenBI
首先需要下载mondrian-3.6.5.jar的源码或者使用反编译软件看到源码,我在网上没找到这个版本(由于我用反编译工具弄的,放到文件中会报错,所以就下载了源码,反正也好找),于是我拿了mondrian-3.7.0.0-752的源码下来,用着也正常

1、从中找到文件mondrian.olap.Util,找到方法readVirtualFileAsString
修改内容为如下(重点是红色内容):
        InputStream in = readVirtualFile(catalogUrl);
        try {
            return IOUtils.toString(in,"utf-8");    //-----------------此行为红色行
        } finally {
            IOUtils.closeQuietly(in);
        }
或者按照网上说的另外一种方式,整体替换为如下内容,也可以,不过下面的编码必须写你的schema文件的编码:
        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,"utf-8").replace("\ufeff" , "" );//加replace("\ufeff", "")是为了过滤"UTF-8无BOM格式文件"的开头
            return str;
        } finally {
            if (in != null) {
                in.close();
            }
        }

2、再找到文件    mondrian.rolap.RolapSchema.load(String, String)

 

修改
                    in = Util.readVirtualFile(catalogUrl);
                    def = xmlParser.parse(in);
为
                    def=xmlParser.parse(Util.readVirtualFileAsString(catalogUrl));

然后重启Saiku,快乐的玩耍吧

 


by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(防止爬虫):http://blog.liuyingguang.cn
OpenBI问答社区:http://openbi.liuyingguang.cn/

Pre: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z

Next: Mondrian3.x 缓存的处理


Table of content