BIEE使用Go Path Navigate带参数访问中文编码的问题
1、起因
因为项目工作的需要,需要在一个系统对接biee报表且参数的提示器要放在本系统,因此参考之后无法使用仪表盘带提示器的方法解决。综合之后决定使用Go?&Path=xxxxxx&Action=xxxxx的url在后台通过拼接参数的方法解决问题。 具体的操作可以参考这个网站(非常详细的拼接教程):
2、问题
因为有部分的过滤器需要传入的参数带有中文的,所以一开始尝试的时候发现如下的例子:"&P3=1+深圳 的时候发现参数是传入进去了,但是因为乱码的缘故,相关的过滤器并没有生效。这时候反应过来是编码问题,在java拼接的时候对中文参数进行URLEncoder.encode进行编码的时候转成使用utf-8来编码,例子如下:
StringBuilder sb=new StringBuilder(); String baseurl="http://localhost:9704/analytics/saw.dll?Go&NQUser=xxxxx&NQPassword=xxxx&Path=/users/weblogic/201812_testpara/paraTest01&Action=Navigate"; sb.append(baseurl); sb.append("&P0=1&P1=eq&P2="表名"."字段名"&P3=1+"); sb.append(URLEncoder.encode("深圳", "utf-8"));
实际我编码后使用拼接后的url传入的中文参数依旧是乱码,过滤器并不能生效。
3、解决方法
解决方法是我从一位博主的一篇文章看到的,引用的地址是: ,在此非常感谢这位博主的贡献,因为相关的研究资料挺少,之前为了解决这个问题也找了不少资料。RT,解决方法就是对中文的部分进行两次utf-8编码,解决后的例子如下
StringBuilder sb=new StringBuilder(); String baseurl="http://localhost:9704/analytics/saw.dll?Go&NQUser=xxxxx&NQPassword=xxxx&Path=/users/weblogic/201812_testpara/paraTest01&Action=Navigate"; sb.append(baseurl); sb.append("&P0=1&P1=eq&P2="表名"."字段名"&P3=1+"); sb.append(URLEncoder.encode(URLEncoder.encode("深圳", "utf-8"), "utf-8"));
解决的方法其实不难,只是之前也没往这方面想。因为这方面比较偏门,研究的人比较少,在此留下解决方法,节省遇到这个问题找各种资料查看的麻烦。