我正在开发一个基于 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>
....
从这一刻起,我的战争文件包含编码错误的资源包。例如,德语变音符号不再正确显示在我的 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 上开发