我现在在做一个birt报表,参数中会涉及到中文,例如参数为: 楼层=3 我在与birt传参的JSP中对参数进行了编码
String wheresql=.("楼层='3'","UTF-8");
在报表里面也加入了解码js:
params["wheresql"]=decodeURI(params["wheresql"]);
但是报表还是会报错如下:
之后我估计问题出现在"="上面,于是我便把字符串拆分,将字符为中文的进行编码,
String wheresqls[] = ("=");
String wheresql2="";
for(int i=0;i<;i++)
{
Pattern p=pile("[\u4e00-\u9fa5]");
Matcher m=(wheresqls[i]);
if(()){
wheresqls[i]=.(wheresqls[i],"UTF-8");
}
}
for(int i=0;i<-1;i++)
{
wheresql2=wheresqls[i]+"='"+wheresqls[i+1]+"'";
}
将组合成的字符串wheresql2传入birt报表,得到了预期的结果。
但是一直不明白为什么第一种方式不行?请教一下各位。
该问题已经关闭: 刚才找到了问题的原因,编码和解码的函数必须对应,就不需要考虑其他问题:传参JSP编码用: String wheresql=.("楼层='3'","UTF-8"); 在对应的birt报表中调用对应的解码函数: params["wheresql"]=.(params["wheresql"],"UTF-8") 就不用考虑之前的‘=’的问题。但是还是不很了解期间的原理,希望有机会同遇到相同问题的朋友一
birt 中文传参数问题 来自淘豆网www.taodocs.com转载请标明出处.