快捷搜索: 王者荣耀 脱发

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"));

解决的方法其实不难,只是之前也没往这方面想。因为这方面比较偏门,研究的人比较少,在此留下解决方法,节省遇到这个问题找各种资料查看的麻烦。

经验分享 程序员 微信小程序 职场和发展