过滤资源时,如果您正在过滤属性文件,则必须特别小心。如果您过滤的属性文件包含非 ascii 字符,并且您的project.build.sourceEncoding设置为 ISO-8859-1 以外的任何内容,您可能会受到影响并应继续阅读。
Maven Resources Plugin 一直到 3.2.0 版本,在过滤资源时默认使用project.build.sourceEncoding作为编码,除非您明确配置插件的encoding参数。因此,除非您在 Maven 资源插件中明确配置了编码参数,否则这就是您所得到的。
当 Properties 类用于读取和写入属性文件时,它们要求属性文件使用 ISO-8859-1 编码。Java 11 仍然是这种情况,可以在Properties 类的 API 文档中看到。因此,以这种方式使用的属性文件需要使用 ISO-8859-1 编码。
当属性文件用作ResourceBundle时,所需的编码因 Java 版本而异。直到并包括 Java 8,这些文件都需要使用 ISO-8859-1 编码。
从 Java 9 开始,属性资源包的首选编码是 UTF-8。它可能适用于 ISO-8859-1,但正如您在 JDK 9文档中的国际化增强中所见,您应该考虑将属性资源包转换为 UTF-8 编码。
你需要做两件事:
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.2.0</version> <configuration> ... <propertiesEncoding>ISO-8859-1</propertiesEncoding> ... </configuration> </plugin> </plugins> ... </build> ... </project>