【问题标题】:how do i fix broken encoding in my webapp?如何修复我的 webapp 中损坏的编码?
【发布时间】: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. &lt;p&gt;öäü&lt;/p&gt;) 中输出这些字符时,它们会在浏览器中正确显示。
  • 此问题存在于 windows 和 linux 中。

提前感谢您的回答。

更新

通过将CharacterEncodingFilter 添加到我的 web.xml 解决了我的问题

【问题讨论】:

  • 如果您已经设置了上面的属性,则不需要为每个插件提供编码,因为插件具有默认值,即属性。所以你可以摆脱对 maven-compiler-plugin、maven-resources-plugin 等的编码。
  • @khmarbaise 是的,你是对的。我很绝望,所以我添加了我在 stackoverlow 上找到的所有配置 :)

标签: eclipse jsp maven spring-mvc


【解决方案1】:

查看 $TOMCAT_HOME/conf/server.xml 文件并检查编码设置:

<Connector port="8080" ... URIEncoding="UTF-8" />

似乎 Tomcat 需要此设置才能使用 UTF-8 来处理 HTTP 请求值,例如 GET 表单提交(也可能是 POST)中的请求参数。

【讨论】:

  • 您需要更改值吗?如果你这样做了,然后尝试删除 tomcat 工作目录,重新启动 tomcat 并再试一次,以防万一......
  • 我必须将 URIEncoding 添加到我的连接器 - 它之前不存在。尝试删除工作目录,但再次失败:(
【解决方案2】:

每次出现有关字符编码的问题时,我都会使用字符的 UNICODE 表示来修复它们。目前我只尝试使用韩文和德文字母。

【讨论】:

  • 这是不切实际的,当字符串来自像我这样的用户时(表单提交,你知道)。
猜你喜欢
  • 2014-12-16
  • 2010-11-23
  • 1970-01-01
  • 2011-09-04
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多