maven - 激活资源过滤后编码错误

标签 maven encoding character-encoding maven-3

我正在开发一个基于 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/

相关文章:

java - 下载 Javax 通信 API

Maven 与 Teamcity 集成

JavascriptencodeURIComponent和Java解码问题

java - 为什么字符串数组空值检查不起作用?

Python imaplib : Display non-ASCII characters correctly

java - IntelliJ CE + Maven 包,无需 IDE

Mysql 德语口音在全文搜索中不敏感搜索

vim - 如何将非 ASCII 字符粘贴到 vim 中?

c - 从C文件中读取unicode字符

java - Vaadin 7 Project with Maven + Tomcat7 编译报错