在JSP中,我发送一个GET请求,其中包含一个名为jobDetails的参数,该参数包含一些中文字符[用URLEncoder.encode()编码]。
request.getParameter("jobDetails"); // this one retrieves wrong characters
对于此设置,有一个解决方案,即
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
标签,但我们的架构师是地狱弯曲在不改变现有的tomcat设置。我尝试设置一个过滤器,以设置字符编码()为request在doFilter()中提到的。但这一个只适用于POST请求。有没有其他的解决方案,除了改变Tomcat的设置?我使用的是Tomcat 6和jdk 1.6。
4条答案
按热度按时间liwlm1x91#
对不起,您必须告诉您的架构师,有时更改配置是唯一的选择,而这正是其中之一。要在Tomcat的URL参数中支持UTF-8字符,您需要将该设置添加到连接器中。
5lhxktic2#
如果与架构师争论听起来不太有趣(事实上也确实如此),那么URLEncodedUtils的解析应该可以满足您的需要。
您仍然需要获取原始请求字符串以传递给此方法,但这应该不会太难。由于它是URL编码的,因此您不需要担心编码,因为所有非ASCII字符都将被转义。
hl0ma9xz3#
您不需要外部库。只需使用
String.getBytes():
1hdlvixo4#
我找到了一种方法......我从org.springframework.web-3.0.0.RELEASE.jar导入了
org.springframework.web.bind.ServletRequestUtils
类,并使用以下内容解析“request”对象中的参数“jobDetails”: