【发布时间】:2012-11-05 22:01:19
【问题描述】:
当我在 Web 应用程序中提交表单时,某些字符(例如德语 umlauts)在进入我的控制器时会损坏。像üäö 这样的字符串最终像üäö 这样。我该如何解决这个问题?
我的设置如下所示:
- spring mvc 3.1.2
- maven 3.0.4 或 2.2.1(都试过了)
- tomcat 7.0.x
- eclipse (sts 3.1.0)
- Windows 8
根据我已经在 stackoverflow 上找到的答案,我尝试了以下事情。
将这些行添加到 jsp 中:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
pom.xml 中的指定编码:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
<plugin>
将eclipse中的编码改为UTF-8。
在调查问题时,我做了以下观察。
- 当我右键单击项目中的文件(资源和 java 文件)并检查指定的编码时,它显示为 UTF-8。
- 当我在 jsps (f.e.
<p>öäü</p>) 中输出这些字符时,它们会在浏览器中正确显示。 - 此问题存在于 windows 和 linux 中。
提前感谢您的回答。
更新:
通过将CharacterEncodingFilter 添加到我的 web.xml 解决了我的问题
【问题讨论】:
-
如果您已经设置了上面的属性,则不需要为每个插件提供编码,因为插件具有默认值,即属性。所以你可以摆脱对 maven-compiler-plugin、maven-resources-plugin 等的编码。
-
@khmarbaise 是的,你是对的。我很绝望,所以我添加了我在 stackoverlow 上找到的所有配置 :)
标签: eclipse jsp maven spring-mvc