Bul*_*aur 9 html forms spring spring-mvc utf-8
我正在尝试提交一个表单,其中包含UTF8字符.表单如下所示:
<form id="workflowPersistForm" accept-charset="UTF-8" method="post" action="/workflow-next">>
<input id="stateGlobal" type="hidden" value=" ??????" name="state">
</form>
Run Code Online (Sandbox Code Playgroud)
我的服务器是基于弹簧的.我的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>true</param-value>
</init-param>
</filter>
Run Code Online (Sandbox Code Playgroud)
问题是UTF-8字符在某个地方搞砸了.我在控制器的开始处设置了一个断点,并且字符在这一点上被弄乱了.此外,如果我在Controller中生成UTF8字符,它将在浏览器中正确呈现.就在表格帖子上,控制器没有正确接收字符.
知道我可能做错了什么吗?
编辑:看起来,在新页面数据中没有弄乱,但是它是双重编码的.我无法理解为什么它是双重编码的.
编辑2:当我更改表单而不是发布时,一切都很完美.我不知道哪个帖子坏了.
Bul*_*aur 11
看起来浏览器不会将charset作为Content-Type的一部分发送到请求标头中(即使设置了表单上的accept-charset),Tomcat也会处理像Latin-1这样的请求(http://wiki.apache. org/tomcat/FAQ/CharacterEncoding#Q1).
因此,稍后可能会将其解码为Latin-1并编码为UTF-8,从而导致字符出现乱码.
将CharacterEncodingFilter移动到顶部并强制将编码设置为UTF-8解决了这个问题.
| 归档时间: |
|
| 查看次数: |
16688 次 |
| 最近记录: |