我将CharacterEncodingFilter
设置为我的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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在我的JSP中:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false" %>
和此:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
但是,例如,Tá
从JSP表单传递回控制器,然后再返回到JSP,变为:T%E
我已完成数小时的Google搜索但无法找到此问题的答案。任何帮助将不胜感激。
答案 0 :(得分:3)
如果您使用的是Tomcat,则可能未在URIEncoding
中设置server.xml
。如果不将其设置为UTF-8,则无效。绝对保持CharacterEncodingFilter
。不过,这里有一个简洁的checklist可供选择。它肯定会指导你完成这项工作。
答案 1 :(得分:1)
如果CharacterEncodingFilter
或您实施的过滤器位于web.xml
的顶部,请确保xml中<filter-mapping>
的{{1}}元素出现在其他元素之前其他过滤器的CharacterEncodingFilter
元素。
花了我很长时间才弄明白。可能对某人有用。