我需要从浏览器向Spring MVC控制器发送一些请求参数,然后像方法参数一样处理它们。问题是我认为tomcat没有对通过的URI数据进行正确的编码。而不是'Имя'
我有%D0%9C%D0%91%D0%94%D0%9E%D0%A3+%D0%B4%2F%D1%81%E2%84%969%D1%81.+%D0%95%D0%BB%D0%B8%D0%BE%D0%BD%D0%BA%D0%B0
我用来读取由于tomcat没有预先安装URI编码而发生的这类问题。
如果你介意我在tomcat配置web.xml中有正文编码,那么我有:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>tru?</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
所以我很好奇我是否必须为容器配置设置其他任何东西。谢谢
答案 0 :(得分:1)
您必须在tomcat配置目录中的server.xml
文件中为HTTP连接器设置URIEncoding属性:
<Connector port="8080" URIEncoding="UTF-8" ... />
答案 1 :(得分:0)
我发现在不更改Tomcat配置的情况下执行此操作的唯一方法是:
将参数放入表格
<form onsubmit="encodeParameter(this.param)">
<input type="text" name="param" />
<input type="submit" />
</form>
然后在提交到服务器之前对其进行编码
function encodeParameter(param){
param.value =encodeURIComponent(param.value);
}
现在在服务器上你会得到正确的字符串。