将特殊字符从JSP传递给Controller

时间:2011-06-21 05:20:01

标签: jsp encoding spring-mvc web.xml

我有一些带有特殊字符的字段。当我通过将表单提交给Springs Controller来从JSP传递这些字段时,它将显示如下所示。

á - á
é - é
í - Ã
ó - ó
ú - ú
ñ - ñ

我尝试了一些在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>

在Controller中编码,

request.setCharacterEncoding("UTF-8");

仍然无法解决问题。请帮助。

提前致谢。

注意:我在stackoverflow中检查了一些与此问题相关的问题,但仍无法找到它。 Character encoding JSP -displayed wrong in JSP but not in URL: "á » á é » é"

1 个答案:

答案 0 :(得分:3)

此过滤器仅适用于POST请求。对于GET请求,您需要在servletcontainer级别配置它。例如,在Apache Tomcat的情况下,您需要编辑<Connector>中的/conf/server.xml条目以添加URIEncoding="UTF-8"属性。

<Connector URIEncoding="UTF-8" ... />

手动调用request.setCharacterEncoding("UTF-8");无效,因为过滤器已经这样做了。