Android Studio编译时出现错误(1,1):非法字符'\ufeff'。

43

我拿到了一个Eclipse项目源代码(有人告诉我在Android Studio上也可以用,但可能他们弄混了),现在我想按照http://developer.android.com/sdk/installing/migrate.html中的迁移教程将代码转移到Android Studio中。

但是这个方法行不通。于是我尝试直接从路径导入该项目,它会自动转换为Android Studio项目,但在编译时仍然出现了一些问题。

Error:(1, 1) error: illegalcharacter: '\ufeff'

错误位置在:

package com.bla.blabla;

请帮忙解决,谢谢。


2
我非常确定那是BOM(字节顺序标记)。请将文件保存为“UTF-8无BOM”。 - Alexey Ten
似乎没有“无BOM”选项。 - Bruce
3
找一个能够保存无 BOM 的文件的编辑器。如果您的文件不包含 ASCII 字符之外的字符,您可以使用记事本将其保存为 ANSI 格式。 - Alexey Ten
似乎是Android Studio的一个bug。https://dev59.com/I3PYa4cB1Zd3GeqPiWmL - Alexey Ten
2
@alexeyten 我用Notepad++修复了它,感谢您的建议。 - Bruce
@Bruce 帮我解决了问题(使用编码打开和保存,然后使用 UTF "无" BOM 保存)... 我使用 Sublime 完成了这个操作... 谢谢.... - Marka A
16个回答

39

这是与BOM(字节顺序标记)字符相关的问题。 字节顺序标记 BOM是用于定义文本文件字节顺序的Unicode字符,并出现在文件的开头。Eclipse不允许该字符出现在文件开头,因此您必须将其删除。为此,请使用富文本编辑器,例如Notepad ++,并将文件保存为“UTF-8无BOM”编码。这应该可以解决问题。


这对我来说解决了问题,我在我的 Sublime Text 上使用。谢谢。 - Marka A
是的,它起作用了。我已经从一个网站复制粘贴了相同的内容到Notepad++中,它显示带有黑色背景的“LS”。删除后,我将相同的内容从Notepad++复制到Java中,它可以正常工作。 - anand krish
解决了我的问题,但请注意,之后的转换和复制粘贴并不起作用。请在您的项目文件夹中打开该文件以使其正常工作。 - Etsitpab Nioliv
1
我使用XCode从我的文件中删除了非法字符。现在它很好。谢谢。 - Kyaw Min Thu L

34

Android studio文件编码

在右下角可以设置文件编码,选择除UTF-8之外的其他选项。

如果出现弹窗,请选择选项转换


19

正如Marcelo所说,我将文件编码选项更改为UTF-16。 运行了一下,但没有成功。 然后再次更改为UTF-8并进行转换。 最终成功运行了。如果上述解决方案不起作用,请尝试此方法。


13

输入图像描述在项目的右下角更改文件编码方式,将UTF-8更改为UTF-16。

  1. 一个新的对话框将会弹出。选择转换并运行它。
  2. 它会给你一些错误提示,然后再次将UTF-16更改为UTF-8。
  3. 进行转换并运行该项目。这次您的项目将成功运行。

1
它帮助了我,谢谢。 - Mahdi Javaheri
1
帮了我很多,谢谢! - Solo

6
我用以下方法解决了这个问题:
  1. 在我的活动中按下 ctrl + A 并复制所有代码
  2. 删除 YourClass.java 文件
  3. 创建 YourClass.java 文件
  4. 将所有代码粘贴到新的 Java 类中
这种方法对我有效。谢谢。

3

我在IntelliJ-2016.1.2中遇到了这个错误。

感谢@Darsh的帮助, 我做了同样的事情,首先将其转换为UTF-16(即转换为UTF-16),然后编译代码。它没有起作用,然后再次改回UTF-8,这次可以正常工作。

谢谢。


欢迎,伙计!欢迎来到StackOverflow。请在我提供的解决方案下面写评论,不要写成答案 :) 祝你编码愉快 :) - Darshn
注释和答案是不同的! - Mohammed Shareef C

2

我尝试了这里其他的几个答案,但都没有成功。

最终,我只是删除了有问题的那一行代码,并直接在Android Studio中重新编写它。这个错误消失了。

是否是因为我从YouTube(或者当时查看的任何随机博客)复制并粘贴了这一行代码导致的?


2

以上是很好的解决方案。然而,如果它们都不起作用,请尝试这个:

在Notepad++中打开文件; 复制所有内容; 创建一个同名的新文件; 粘贴所有内容; 保存。

现在,问题被解决了。


2
你可以尝试这个方法:
  1. 将类重命名为class1.java
  2. 创建一个新类,例如class.java,并将其重命名。
  3. 选择所有包含重命名文件的内容并复制到新类中。
这个方法对我很有效。

1

关闭 Android Studio 并重新打开它。对我很有效。此外,如果你从 YouTube 等网站复制评论并粘贴到项目中,也可能会出现这种情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接