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()方法的部分代码,修改的时候请对比差异部分进行修改
 
 

猜你喜欢

转载自blog.csdn.net/jnwzping/article/details/84615154