Android Studio在将BOM写入UTF-8文件

6
我正在处理一个所有源文件都采用UTF-8编码的项目,以便让Java编译器满意(否则,它会在其他编码上报错)。但每次我使用Android Studio保存源文件时,它会在文件上写入字节顺序标记,从而导致编译失败。我该如何解决这个问题?
作为一种解决方法,我手动使用十六进制编辑器删除BOM,但这真的很麻烦。

你在控制台中遇到了哪个错误!!!能否请你解放一下!!! - NovusMobile
https://dev59.com/vW035IYBdhLWcg3wc_wm 同样的问题...帮助你找到解决方案... - NovusMobile
@AndroEmbedded 这个错误是关于BOM作为转义序列的问题。它会尝试将其识别为语言元素,但显然会失败。 - Machinarius
6个回答

3

我尝试移除BOM失败了。

这是我从网站上复制代码的问题。

我重新写了代码,问题得到解决。


2
在Android Studio的“项目”面板中,右键单击存在BOM问题的文件,选择:分析>检查代码。 然后单击确定。 您将获得文件中所有BOM错误的列表。 您可以右键单击每个错误,然后选择删除BOM。

2
看起来这是IntellJ IDEA的一个bug,而Android Studio也基于此。
请尝试以下步骤:
  1. 在设置|文件编码中,使用鼠标选择第二列中的“Projekt”条目,并选择“”(确认删除子目录中设置的编码,或选择您不希望强制执行默认编码的目录)。
  2. 取消选择“自动检测UTF编码的文件”
  3. 选择“透明本地到ASCII转换”
(以上参考)
另一个可能的解决方案是使用十六进制编辑器或其他文本编辑器在Android Studio之外删除所有BOM,然后在AS中选择文件->同步

+1 找到了错误票,但我认为它仍然是开放的,不是吗?那里没有解决方案或解决方法。在 YouTrack 中似乎也无法投票解决错误。 - Rup
很不幸,这个漏洞似乎仍然存在 :( 但是,有一个解决方法被列出来了,上面的链接应该会直接带你到它(它涉及删除所有文件的默认编码)。此外,如果您已登录,您可以投票支持;在漏洞标题下面有一个“向上”的箭头。 - free3dom
哎呀,是的 - 我应该在页面源代码中搜索“投票”,而不仅仅是页面文本。完成了,已投票 - 谢谢。 - Rup

1
如果您正在使用Android Studio 3.3.1,只需右键单击文件,从菜单中找到“删除BOM”即可。

但是为什么Android Studio首次添加它,当设置说“创建UTF-8文件:没有BOM”? - Christian Davén
这对我解决了问题。这是在将我的项目迁移到使用他们的新viewBinding功能后发生的。不过,我希望我知道@ChristianDavén的问题的答案...我在Google上找不到任何信息。 - hellaandrew

0

对于 Android Studio 3.4,在 Android 项目上右键单击。将弹出一个列表,在列表下方您会看到“无 BOM”选项,请单击它,然后运行项目。编码字节错误问题将得到解决。


0

您可以使用一些工具将您的文件转换为带BOM的UTF-8格式。

我使用了Notepad++:

  1. 如果有的话,请从文件中删除"<?xml version="1.0" encoding="utf-8"?>"。(我使用Notepad进行了操作)
  2. 使用Notepad++打开文件。
  3. 确保您看到的字符是正确的。
  4. 选择菜单 -> 编码 -> 转换为UTF-8
  5. 在文件开头添加"<?xml version="1.0" encoding="utf-8"?>"

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