解决生成的saiku文件读取中文乱码的问题

前提,我的saiku版本是2.6的final版本

先说说出问题的原因吧,你说这个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");

你可能感兴趣的:(编码,乱码,saiku,BI,utf-8)