• java:[1,0] illegal character: 65279 问题


    部署项目的时候报下面错误

    1. java:[1,0] illegal character: 65279  
    2. java:[1,10] class, interface, or enum expected
    表面看着该文件确实没错。看不出来问题,后来从SVN上更新下代码以后。发现本地也不报错。后来通过Eclipse查看了该xxx.java类的属性,才发现玄机所在:

    编译有问题的文件属性:(注意最以下一行 Byte Order Mark is UTF-8  (BOM)


    编译正常的文件属性:


    看来问题出在 Byte Order Mark is UTF-8  (BOM)上。

    由于看不出来问题,所以用UltraEdit打开两个文件。并用16进制格式显示:

    有问题的文件头:


    无问题的文件头:

    看来有问题的文件头前面多了三个字节EF BB BF。

    详细原因例如以下:

            某些编辑器会往utf8文件里加入utf8标记(editplus称其为签名),它会在文件開始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),它的表示的是 Unicode 标记(BOM)。 因此要解决问题的关键就是把这个标记选项去掉,可按例如以下方法操作。 
           方式一: 首先用editplus打开这个文件。从Doucument菜单中选择Permanet Settings,有三个分类,各自是General,File, Tools.点击File,右边会有一项是 UTF-8 signature: 选择 always remove signature. 点击OK 。

    中文版本号的 Editplus 下操作的菜单结构例如以下: 文档->參数设置->文件->UTF-8签名->总是移除签名->确定 ,这样就设置了UTF-8格式不须要在文件前面加标记,最后把文件另存为utf-8格式就好了.

         方式二:用Notepad++ 打开xx.java ,选择菜单条的 格式 ---以 UTF-8无BOM格式编码,保存提交就可以


    相关资料,网上摘抄:

             UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前。首先要弄清楚每一个编码单元的字节序。比如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。假设我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。

    BOM是一个有点小聪明的想法:在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。UTF-8不须要BOM来表明字节顺序,但能够用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者能够用我们前面介绍的编码方法验证一下)。所以假设接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。原来BOM是在文件的開始加了几个字节作为标记。


    扩展阅读:

    UTF-8, UTF-16, UTF-32 & BOM:http://www.unicode.org/faq/utf_bom.html#BOM

    W3C官方说明:http://www.w3.org/International/questions/qa-utf8-bom

  • 相关阅读:
    Power Desginer系列00【转载】
    Power Desginer系列02【转载】
    【转】华为路由器、交换机设备模拟器
    【图片教程】大学易站注册发布教程!
    【转】使用BT3、BT4光盘系统、虚拟机vmware破解无线上网
    【技术贴】设置 Eclipse 智能代码提示,大幅度减少 alt+/ 使用频率,打每个字都出现代码提
    【技术贴】ASPNET登录失败。MSsql2005拒绝了对对象 ''xxx'' (数据库 ''xx
    【技术贴】火狐的悬停激活标签扩展插件下载。Tab Focus
    【技术贴】桌面图标变色了怎么办?桌面图标快捷方式失真、模糊的解决办法!
    【转】【CN五一装机版】GhostXP_SP3电脑公司通用版v19.2装机版NTFS
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7197057.html
Copyright © 2020-2023  润新知