12

我正在尝试使用保存为 UTF-8 且具有BOM的文件编译一个 Maven Java 项目,但是我从 BOM 字符中得到一个非法字符错误,尽管我同时具有设置为project.build.sourceEncodingencoding和。maven-compiler-pluginUTF-8

我是否缺少其他设置?我什至可以在不删除 BOM 的情况下编译它(不允许对源代码进行任何更改,但我可以修改 POM)?


错误:

java: C:\code\main\src\test\java\net\initech\finance\FinanceTest.java:1: 非法字符:\65279

物业:

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

插件:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>
4

4 回答 4

12

如果它是 UTF-8 而不是 UTF-16,则 BOM 根本没有任何作用。为什么放在里面?此外,只有 Java 在这里抱怨——而不是 Maven。

查看JDK-4508058:UTF-8 编码无法识别 相关的初始 BOM。

于 2013-07-09T18:30:09.527 回答
8

1.关闭你的项目。

2.尝试用notepad++打开你的文件,并切换到'UTF-8 without BOM'。

3.重新打开您的项目。

于 2015-12-13T05:22:16.343 回答
6

这发生在我使用记事本打开一个 Java 类之后。这改变了文件的编码。

我做的一个简单的技巧是这样的:

  1. 从 Android Studio/Eclipse 打开您的课程
  2. Ctrl + A 然后 Ctrl + X
  3. 立即删除您的空班级
  4. 创建一个具有相同名称的新类
  5. Ctrl + V 代码
  6. 完毕
于 2016-02-18T08:23:54.143 回答
0

==,看看等号的区别。右边的一个用于普通的英文字体,而左边较长的一个通常用于中文。

于 2016-03-06T07:38:57.670 回答