您的位置:首页 > 大数据 > 人工智能

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

2014-11-15 11:19 501 查看
前提,我的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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: