我正在开发一个基于 Maven 的 Web 项目。在我的网络模块中,我使用了不同语言的特定资源包(德语、西类牙……)。
我所有的资源都是基于 UTF-8 的,一切都很好。
现在有必要激活 maven 资源过滤以根据不同的 maven 配置文件替换一些配置。
我的 pom.xml:
.....
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
.....
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
....
从这一刻起,我的 war 文件包含编码错误的资源包。例如,德语变音符号不再正确显示在我的 Web 应用程序中。
当我禁用资源过滤时,一切都恢复了。
我找到的唯一解决方案是将属性 project.build.sourceEncoding 设置为“ISO-8859-1”
<properties>
<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>
但我不明白为什么这是必要的?我所有的来源都是 UTF-8,而且我的应用程序也是基于 UTF-8 的?
如果我需要添加一个资源包,例如日文字符,会发生什么?
我正在使用 Eclipse 4.2 和 Maven 3 在 linux 上开发
最佳答案
您确定您的资源包 (.properties) 正在使用 UTF-8
?java.util.Properties
假设 ISO-8859-1
资源包编码见http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load(java.io.Reader) ,并且我认为 Eclipse(以及 IntelliJ IDEA)尊重这些文件(.properties)的这种默认编码。
因此,请使用文本编辑器检查项目源代码树中这些文件的当前编码,在 Windows 中记事本 2 可以帮助你。
然后配置maven-resources-plugin
就像这里指出的 Configure encoding for different filetypes in maven?
关于maven - 激活资源过滤后编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327003/