错误:在 maven 编译期间编码 UTF8 时无法映射字符

2022-08-31 14:40:54

我正在使用maven编译一个包,它说构建失败,并出现以下编译错误:

西班牙语测试.java[31, 81] 用于编码 UTF8 的不可映射字符

我在网上搜索,对于很多人来说,将源编码从UTF-8更改为ISO-8859-1似乎有效,但我仍然收到相同的编译错误。我使用的是 32 位 Ubuntu。这是这个标签在我的pom中的样子.xml

<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>

即使我将标签更改为ISO-8859-1,我仍然会收到错误。可能是因为java版本吗?我在我的系统上安装了两个太阳java和openjdk。<project.build.outputEncoding>

任何人都可以让我知道该怎么做。

谢谢


答案 1

将 maven-compiler-plugin 配置为使用与源文件编码相同的字符编码(例如):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

默认情况下,许多 maven 插件将使用 “project.build.sourceEncoding” 属性,因此在 pom 中设置此属性将涵盖大多数插件。

<project>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
...

但是,我更喜欢在每个插件的配置中设置支持它的编码,因为我喜欢显式。

当您的源代码由 maven-compiler-plugin 编译时,编译器插件将使用编译器插件配置的任何编码读取您的源代码文件。如果您的源文件的编码与编译器插件使用的编码不同,则某些字符可能不存在于两种编码中。

许多人更喜欢将源文件的编码设置为UTF-8,以避免此问题。要在 Eclipse 中执行此操作,您可以右键单击某个项目,然后选择“属性->资源->文本文件编码”,然后将其更改为 UTF-8。这将以 UTF-8 格式对所有源文件进行编码。(如上所述,您还应该显式配置 maven-compiler-plugin 以使用 UTF-8 编码。由于源文件和编译器插件都使用相同的编码,因此在编译过程中不应再有任何不可映射的字符。

注意,您还可以通过 Window->Preferences->General->Workspace->Text File Encoding 在 eclipse 中全局设置文件编码。您还可以通过“窗口>首选项>一般>内容类型”来设置每种文件类型的编码。


答案 2

如果上述答案不起作用,请将编码更改为 cp1252 或手动删除所有出现的特殊字符。对我来说,特殊字符导致在注释块内的概率。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>2.3.2</version>
   <configuration>
       <encoding>Cp1252</encoding>
   </configuration> 
</plugin>

附言:I使用的是 GNU/Linux OS(Ubuntu)。


推荐