【问题标题】:spring-mvc can not decode chinese charactersspring-mvc 无法解码汉字
【发布时间】:2011-03-23 16:16:31
【问题描述】:

我已阅读此jsp page encoding problem 和此Save Chinese characters with Spring-MVC / Java

自从我的项目开始以来,我在 web.xml 中有以下代码片段,它似乎正确注入:

<!-- Reads request input using UTF-8 encoding -->
    <filter>
        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

并且 http 请求设置了此标头“content-type:application/x-www-form-urlencoded; charset=UTF-8” 但是日志行显示了这一点: 请求体 Bean:[UserBean@4a8da092 fristname = '??', lastname = '??']

另外,我使用的是 NetBeans,如果我将鼠标悬停在变量 firstname 和 lastname 上,它们会正确显示。 不知道我还需要什么才能让它工作。任何帮助,将不胜感激。

【问题讨论】:

  • 这一切都证明你的日志不能显示汉字。它可能在应用程序内部运行良好,但如果您的开发环境无法显示它们,您无从得知。

标签: java servlets spring-mvc character-encoding


【解决方案1】:

听起来一切都很好,但您的记录器无法显示这些字符,或者您用来查看这些日志的文本查看器可能无法解码这些字符。

您可以通过在十六进制编辑器中打开日志文件并查找与您的输入匹配的 UTF-8 值(具有前导 1 或显示为负值的字节)来排除文本查看器

【讨论】:

  • 原来 log4j 默认不使用 utf-8。更改后,它的工作原理!
猜你喜欢
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多