【问题标题】:UTF-8 support in Spring 3 MVC applicationSpring 3 MVC 应用程序中的 UTF-8 支持
【发布时间】:2012-04-27 04:00:42
【问题描述】:

我在使用 UTF-8 时遇到问题。

common.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

典型的.jsp

<%@ include file="common.jsp" %>

页眉

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

表格

<form id="screenObject" accept-charset="UTF-8" action="/SiteAdmin/articleHeaderEdit?articleId=15" method="post">

我在文本字段中输入非 latin1 字符,然后单击保存。 Validator 抱怨另一个字段并停止提交。这永远不会到达数据库,因此数据库处理 UTF-8 的能力不在这张图片中。页面重新显示并出现适当的错误,但输入的文本全乱了。所有非 latin1 字符都被转换为一些乱码。

我正在使用 Spring 3 MVC,以防万一……

尝试

将此添加到我的视图解析器没有帮助:

<property name="contentType" value="text/html;charset=UTF-8" />

解决方案

将编码过滤器添加到 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>

【问题讨论】:

  • 如果使用数据库,请检查数据库连接编码是否设置正确。

标签: java utf-8


【解决方案1】:

在数据流中的某个地方,您正在使用 UTF-8 以外的方式将字符串编码为字节或将字节流解码为字符串。当您使用某些使用默认字符编码的 API 调用时,通常会发生这种情况。在不知道您的代码的情况下,我们只能告诉您这些。

另请参阅 this link 了解 Spring 中的字符编码问题,或在论坛中搜索 [spring] character encoding 以了解更多其他帖子。

【讨论】:

  • 将 encodingFilter 添加到我的 web.xml 后,Tomcat 无法启动。警告:[SetPropertiesRule]{Server/Service/Engine/Host/Context} 将属性“源”设置为“org.eclipse.jst.jee.server:SiteAdmin”未找到匹配的属性。信息:启动 Servlet 引擎:Apache Tomcat/7.0.12 java.lang.NullPointerException
  • 我必须在 Eclipse 中使用 UTF-8 编码保存我的文件吗?
  • 添加编码过滤器解决了我帖子中描述的问题。但是,我们需要小心,因为您回复中的链接指向拼写错误的 filter-class 示例。复制和粘贴该代码会导致无法立即清除的问题。
  • @jacekn - 我很高兴你的问题得到了解决。也很高兴知道拼写错误。关于 Eclipse - 只有将 UTF-8 字符放在源文件中时,才需要将项目(或工作区)编码设置为 UTF-8。我习惯将所有工作区的默认编码设置为 UTF-8。
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2018-08-06
  • 2013-10-11
  • 2021-08-01
相关资源
最近更新 更多