pentaho5 使用saiku作为UI,当schema使用中文,会出现乱码情况。是因为mondrian读取schema文件的时候编码错误,schema建议使用"
UTF-8无BOM格式文件"。需修改一下源代码:
一、修改mondrian.jar 包下的
mondrian.olap.Util.java 下的
readVirtualFileAsString方法,如下:
public
static
String readVirtualFileAsString(
String catalogUrl)
throws
IOException
{
InputStream in = readVirtualFile(catalogUrl);
try
{
final
byte
[] bytes = Util. readFully(in, 1024);
final
char
[] chars =
new
char
[bytes.
length
];
for
(
int
i = 0; i < chars.
length
; i++) {
chars[i] = (
char
) bytes[i];
}
String str =
new
String(bytes,
"gbk"
).replace(
"\ufeff"
,
""
);
//加replace("\ufeff", "")是为了过滤"UTF-8无BOM格式文件"的开头
return
str;
}
finally
{
if
(in !=
null
) {
in.close();
}
}
}
二、修改mondrian.jar 包下的
mondrian.rolap.RolapSchema.java 下的
load() 方法:
protected
void
load(String catalogUrl, String catalogStr) {
try
{
final
Parser xmlParser = XOMUtil.createDefaultParser();
final
DOMWrapper def;
if
(catalogStr ==
null
) {
InputStream in =
null
;
try
{
//
TODO
wanpUpdate 配置文件乱码问题
/*in = Util.readVirtualFile(catalogUrl);
def = xmlParser.parse(in);*/
def = xmlParser.parse(Util.readVirtualFileAsString(catalogUrl));
}
finally
{
if
(in !=
null
) {
in.close();
}
}
以上为
load()方法的部分代码,修改的时候请对比差异部分进行修改。