解决生成的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");
先说说出问题的原因吧,你说这个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文件读取中文乱码的问题
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
- Perl读取Excel文件并解决中文乱码问题
- 解决python读取中文文件乱码问题
- 读取文件时出现中文乱码问题的解决
- 读取文件,解决中文乱码问题
- 解决Java读取properties文件中文乱码的问题
- 彻底解决使用Doxygen 1.5.6自动生成的chm文件导航栏中文乱码问题
- java获得*.properties配置文件的值,解决读取中文时乱码的问题:
- Java读取properties文件中文乱码问题的解决
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- Andoird - 解决读取txt文件中文乱码问题
- Java 读取ANSI文件中文乱码问题解决方式
- PHP自带函数fgetcsv读取csv文件中文乱码问题解决办法
- Java读取properties文件中文乱码问题解决
- 解决FileInputStream 读取文件中文乱码问题
- 生成、读取 二维码(QR码)-采用ZXing(已解决中文乱码的问题)
- android解决读取中文文件乱码的问题
- php读取淘宝数据包csv文件 unicode ucs-2 utf-16 中文乱码问题解决
- Java读取ini文件和中文乱码问题解决