专栏首页黑泽君的专栏Eclipse 中 Syntax error on token "Invalid Character", delete this token 的解决

Eclipse 中 Syntax error on token "Invalid Character", delete this token 的解决

  eclipse中遇到了Syntax error on token "Invalid Character", delete this token(令牌“无效字符”上的语法错误,删除此令牌)的错误提示,看代码是完全没有问题,上网查了半天发现遇到这个问题的好像不太多,总结一下问题原因和解决方案:

1、看到这个提示首先想到的是标点符号是不是中文,或者全角半角的问题了,通过检查,这种问题并不存在。

2、然后看到一个帖子说用Android Studio引入eclipse项目时遇到了同样的错误,原因是eclipse和idea对同样编码utf-8的细节不一致,一个有BOM,一个没有。

3、什么是BOM呢?   BOM的全称是:Byte Order Mark(字节顺序标记)。UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解析一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如:收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”? Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark(字节顺序标记)。在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。   我们使用Notepad++,当我们选择【编码(N)】时,会出现编码的选项,如下图所示:

4、UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

5、通过UE查看文件的16进制形式,发现开头包含EF BB BF串,eclipse不对其做识别而作为普通的字符处理,因此报错

6、问题定位到该怎么解决呢?解决方法如下:   1)使用UE或者其他文本工具,将有问题的java文件另存为UTF-8,无BOM编码的格式,替换原来的java文件。   2)使用eclipse自建的文件编码,尽量不要从其他地方拷贝代码,手写要复制的代码。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 字符与字节有什么区别呢?

    1、计算机存储信息的最小单位,称之为位(bit),音译为比特,二进制的一个“0”或一个“1”叫一位。 2、计算机存储容量基本单位是字节(Byte),音译为拜特...

    黑泽君
  • 编码知识大杂烩

    ASCII码 (American Standard Code for Information Interchange,美国标准信息交换代码),最原始最直观的表...

    黑泽君
  • log4j WARN 的解决办法

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、U...

    黑泽君
  • 刨根究底字符编码之十二——UTF-8究竟是怎么编码的

    UTF-8编码是Unicode字符集的一种编码方式(CEF),其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节,当然,也可以更长...

    用户1876609
  • an example of Ascii using 问号 as example

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    Jerry Wang
  • 刨根究底字符编码之十一——UTF-8编码方式与字节序标记

    接下来将分别介绍Unicode字符集的三种编码方式:UTF-8、UTF-16、UTF-32。这里先介绍应用最为广泛的UTF-8。

    用户1876609
  • 理清字符集和字符编码关系

    计算机内部由集成电路(Integrated Circuit,IC)构成,IC的所有引脚,只有直流电压0V和5V两个状态。也就是说,IC的一个引脚,只能表示两个状...

    木可大大
  • 中文编码问题详解

    ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等

    洋仔聊编程
  • [CS]聊聊字符编码

    用爬虫在百度爬图片的时候,发现部分查询关键字的时候,出现爬不出图片的情况.比如在爬鱼的时候,就没有结果.爬鱼 图片就会有结果.

    wOw
  • UTF-8简介

    UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thom...

    魏晓蕾

扫码关注云+社区

领取腾讯云代金券