即使添加了过滤器,也不会对帖子正文进行编码

时间:2016-01-17 08:21:13

标签: java spring spring-mvc

我在web.xml中有了CharacterEncodingFilter(第一个过滤器)

<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>

但是当我发出POST请求时,正文不会被编码 请求发送身体:

{
    "hi": "您好"
}

但收到

{
    "hi": "??"
}

2 个答案:

答案 0 :(得分:2)

CharacterEncodingFilter不会更改请求(或响应)内容的编码,它只设置请求/响应http-header。

@查看CharacterEncodingFilter.doFilterInternal(...)的代码

答案 1 :(得分:1)

在tomcat中将file.encoding设置为UTF8。当系统编码为UTF-8时,我不知道为什么tomcat不工作。

根据Java文档here

  

下表显示了Java SE 7支持的编码集。新java.nio API使用的规范名称在很多情况下与java.io和java.lang API中使用的名称不同。