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自建的文件编码,尽量不要从其他地方拷贝代码,手写要复制的代码。

原文地址:https://www.cnblogs.com/zl520/p/10308108.html

时间: 2024-08-29 19:28:14

Eclipse 中 Syntax error on token "Invalid Character", delete this token 的解决的相关文章

【bug】Syntax error on token "Invalid Character", delete this token 的解决

原文地址:https://blog.csdn.net/actsai/article/details/24256987   eclipse 中遇到了Syntax error on token "Invalid Character", delete this token的错误提示,看代码是完全没有问题,上网查了半天发现遇到这个问题的好像不太多,总结一下问题原因和解决方案吧. 看到这个提示首先想到的是标点符号不是不是中文,或者全角半角的问题了,通过检查,这种问题并不存在. 然后看到一个帖子说

Linux中syntax error near unexpected token 错误提示解决方法

Linux中syntax error near unexpected token ... 错误提示有一般有两种原因: 1)window和Linux下换行符不一致导致 window下的换行和Linux下的换行不同,如果将window下编写的代码文件上传到Linux下,容易出现该错误提示.可用 vi -b 文件名 或者cat -v 文件名命令查看,如果是游云换行符引起的,则每行后面有^M,这时只要将每个^M去掉即可. 2)Linux指令之间没有空格隔开

Parse error: syntax error, unexpected end of file in *.php on line * 解决方法

Parse error: syntax error, unexpected end of file in *.php on line * 解决方法 这篇文章主要介绍了PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法,需要的朋友可以参考下 今天在写PHP程序的时候总是出现这样的错误:Parse error: syntax error, unexpected end of file in

Eclipse中项目全部报错----项目全部打红叉的解决办法

今天遇到一个超级郁闷的事情,Eclipse新建的项目全部都打有红叉,我起初以为自 己可能是因为这两天一直在配置NDK开发环境方面的东西,是不是一不小心把那个地方给配置了,然后新建项目时项目都会出现红叉的效果.然后我clean了 一下,遭大糕了,所有的项目都出错了. 打开下面的错误提示: 错误的意思:Debug Certificate 过期了的缘故.百度了一下,果然也有遇到相似的问题,说是牵涉了一个私钥的时间期限问题. 解决办法是:进入:C:\Documents and Settings\Admi

eclipse中项目ERROR:Unbound classpath jre system library

这个问题是因为项目中的JRE库与当前eclipse中的JRE库不一致造成的,我项目中是1.8的而eclipse中是1.7的所以需要更改: 第一步: 选中项目右键菜单>Build Path>Configure Build Path 接着OK>Finish>OK.就真的OK了

Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

首先需要双击tomcat server,如下图所示: 双击上图后会出现,tomcat配置的界面: 然后再点击上图的,红色矩形框的链接,会弹出tomcat参数配置的节面,要选择Arguments参数框: 如上图在VM arguments文本框内设置 -XX:MaxPermSize=256m的值即可, 当然此处还可以添加其他jvm参数,比如最大内存,最小内存等.

eclipse中同步代码PULL报错checkout conflict with files的解决方法

1.Team--->Synchronize Workspace 2.在同步窗口找到冲突文件,把自己本地修改的复制出来 3.在文件上右键选择 Overwrite----->Yes , 4.再次在冲突文件上右键选中 mark as merged 5.再把复制出来的自己修改的内容与当前内容合并 6.再切回Package Explorer界面再次PULL.Success! 原文地址:https://www.cnblogs.com/fanblogs/p/10614335.html

[eclipse]“Syntax error, insert "}" to complete”报错的解决方案

背景:本人在网上学习java时,看到一段样例代码比较好,因此复制粘贴到eclipse中看看编译结果.结果eclipse报"Syntax error, insert "}" to complete"错误.如下图所示: 经过查找,代码中没有缺少"}"号,也没有语法错误.再经常反复查找问题,终于发现导致报错的原因是在复制过程中,下图大括号前面的类似空格的不可见字符没有删除.把下图红线的空格删除后,报错就消失了.

go语言中的invalid character '\x00' after top-level value

设计的一个项目,需要从客户端中,发生一个结构体信息给服务端,服务端对接收到的信息进行验证.这里我考虑的是将结构体转换为json,然后传递至服务端,服务端解析json即可. 由于json的数据格式就是[]byte,所以在网络传递中不需要转换,直接传递就可以了.对方接收到[]byte数据,也就是json数据,直接json解析就行了. 然而,在服务端中解析时,显示invalid character '\x00' after top-level value. 结构体代码: type Message st