Java 即使在添加筛选器后,邮件正文也未编码

Java 即使在添加筛选器后,邮件正文也未编码,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在web.xml中设置了CharacterEncodingFilter(第一个过滤器) <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> &

我在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>
但被视为

{
    "hi": "??"
}

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


@请参阅设置
文件的代码。在tomcat中将
编码为
UTF8
。我不知道当系统编码为UTF-8时tomcat为什么不工作

根据Java文档

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


有什么方法可以在应用程序中实现吗?这取决于问题的原因。我在对你的问题的评论中写了一些问题。你使用的是哪台web服务器?Tomcat 7是偶然的吗?如果您升级到Tomcat8,默认情况下它应该自动为UTF-8服务。(与tomcat7不同,tomcat7默认提供OS字符集,所以ISO…在windows下)在prod中使用tomcat7,但在dev中使用jetty mvn插件。另外,我使用Ubuntu,默认字符集为UTF-8。您收到的内容看起来不像是请求编码的问题(我预计会有更多的4到6个字符,如果不考虑响应编码,而是使用ISO 8859-1,则会更奇怪)——您是否检查过his不仅仅是您的字体问题?-您如何打印已发布的“已接收”信息内容?-客户端/浏览器在HTTP头中发送的编码是什么?我收到了“”?。我检查了字节,它们是{63,63}。所以它确实是一个?。客户端没有进行任何编码。奇怪的是,所有非ascii字符都被接收为?(63)
{
    "hi": "??"
}