先说说出问题的原因吧,你说这个saiku也挺有趣,有些地方,注明读取的编码,有些地方不注明,而是使用系统默认的,只要用了系统默认,肯定会出问题啦,于是乎必须解决这个问题啊
saiku中,在保存saiku文件的时候,没有设置输出流编码,如下第四点,然而在读取的时候,却又是部分地方使用UTF-8编码,部分使用系统默认编码,这样就导致系统由于乱码可能出现查询不了的问题
如下的1,2,3是读取saiku文件的时候需要修改的地方,4是写入saiku文件的时候需要修改的地方
解决办法,需要修改4个地方的编码:
1、找到类QueryResource的createQuery方法,2、找到类QueryDeserializer的getFakeCube方法,3、找到类BasicRepositoryResource2的getResource方法4、找到类BasicRepositoryResource2的saveResource方法
修改 xml = new String( (byte[]) f.getEntity());为 xml = new String( (byte[]) f.getEntity(),"utf-8");
修改 InputSource source = new InputSource( ( new ByteArrayInputStream( xml.getBytes() ) ) );为 InputSource source = new InputSource( ( new ByteArrayInputStream( xml.getBytes("UTF-8") ) ) );
修改 InputStreamReader reader = new InputStreamReader(repoFile.getContent().getInputStream());为 InputStreamReader reader = new InputStreamReader(repoFile.getContent().getInputStream(),"UTF-8");
修改 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/