天天看点

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 配置文件乱码问题                                           def = xmlParser.parse(Util.readVirtualFileAsString(catalogUrl));                 }  finally  {                      if  (in !=  null ) {                         in.close();                     }                 }        以上为 load()方法的部分代码,修改的时候请对比差异部分进行修改。