é变成& 195;#169然后成为é如何修复此编码问题?

时间:2010-12-01 15:31:25

标签: java xml character-encoding pdf-generation maven

我在Eclipse中有一个UTF-8的java文件,并且有一些包含重音的字符串。

在java文件本身中,重音被编写并保存为é。 在使用velocity生成的xml中,é变为é 在使用fop和xsl模板生成的pdf中,输出显示为é

所以这可能是一个编码问题,一切都应该是UTF-8。奇怪的是,在我的eclipse环境(windows)中本地运行应用程序,整个过程正常工作,正确的重音é显示在pdf中。

但是,当应用程序使用maven构建并部署到(unix环境)时,我会看到上述问题。

1 个答案:

答案 0 :(得分:3)

Eclipse可能正在使用与Maven不同的javac命令行编译该文件。

编译Java时,必须告诉编译器源文件的编码(如果它们包含非ASCII字符,默认值不起作用)。

javac -encoding utf8 MyCode.java

认为在Maven中修复此问题的方法是将其添加到您的pom.xml文件中:

<project>
  ...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  ...
</project>

(我从a Maven FAQ about a slightly different issue得到了。)

您可以完全通过在Java文件中使用丑陋的Unicode转义序列来避免编码问题。 é将成为\u00e9。对人类来说更糟糕,对于烤面包机来说更容易。 (正如佩里斯所说,“在人机共生中,必须调整的是人:机器不能。”)