解决生成的saiku2.x文件读取中文乱码的问题
saiku2 OpenSource OpenBI    2017-07-19 23:21:44    983   
lightingfire   saiku2 OpenSource OpenBI
先说说出问题的原因吧,你说这个saiku也挺有趣,有些地方,注明读取的编码,有些地方不注明,而是使用系统默认的,只要用了系统默认,肯定会出问题啦,于是乎必须解决这个问题啊
saiku中,在保存saiku文件的时候,没有设置输出流编码,如下第四点,然而在读取的时候,却又是部分地方使用UTF-8编码,部分使用系统默认编码,这样就导致系统由于乱码可能出现查询不了的问题

如下的1,2,3是读取saiku文件的时候需要修改的地方,4是写入saiku文件的时候需要修改的地方

 

解决办法,需要修改4个地方的编码:


1、找到类QueryResource的createQuery方法,
修改 xml = new String( (byte[]) f.getEntity());
 xml = new String( (byte[]) f.getEntity(),"utf-8");
2、找到类QueryDeserializer的getFakeCube方法,
修改 InputSource source = new InputSource( ( new ByteArrayInputStream( xml.getBytes() ) ) );
为 InputSource source = new InputSource( ( new ByteArrayInputStream( xml.getBytes("UTF-8") ) ) );
3、找到类BasicRepositoryResource2的getResource方法
修改 InputStreamReader reader = new InputStreamReader(repoFile.getContent().getInputStream());
为 InputStreamReader reader = new InputStreamReader(repoFile.getContent().getInputStream(),"UTF-8");
4、找到类BasicRepositoryResource2的saveResource方法
    修改   OutputStreamWriter ow = new OutputStreamWriter(repoFile.getContent().getOutputStream());
    为     OutputStreamWriter ow = new OutputStreamWriter(repoFile.getContent().getOutputStream(),"UTF-8");

 

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

 

 

Pre: Mondrian3.x 缓存的处理

Next: saiku2.x前端自动查询设置


Table of content