我在Eclipse中有一个UTF-8的java文件,并且有一些包含重音的字符串。
在java文件本身中,重音被编写并保存为é。
在使用velocity生成的xml中,é变为é
在使用fop和xsl模板生成的pdf中,输出显示为é
所以这可能是一个编码问题,一切都应该是UTF-8。奇怪的是,在我的eclipse环境(windows)中本地运行应用程序,整个过程正常工作,正确的重音é显示在pdf中。
但是,当应用程序使用maven构建并部署到(unix环境)时,我会看到上述问题。
答案 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
。对人类来说更糟糕,对于烤面包机来说更容易。 (正如佩里斯所说,“在人机共生中,必须调整的是人:机器不能。”)