qa1:javac 编译时报"编码GBK的不可映射字符"
在用javac 编译java类的时候报“编码GBK的不可映射字符”错误,解决方法是javac -encoding UTF-8 XXX.java,也可以将java文件保存为ANSI格式,继续用javac xxx.java
qa2:非法字符: '\ufeff'解决
一. 问题解决办法
在昨天,帮助同学把他的Android项目从eclipse迁移到Android Studio上面的时候,编译时,Android Studio报了一个错误,
***.java
Error:(1, 1) 错误: 非法字符: '\ufeff'
Error:(1, 10) 错误: 需要class, interface或enum
经过查看,该文件采用的编码方式为UTF-8带BOM的格式,随后,使用NotePad++打开该文件,并将文件格式改为以UTF-8无BOM格式编码(如图1:选择格式第二项)并保存之后问题得以解决。
图1
二. UTF-8与UTF-8无BOM
BOM:Byte Order Mark.
BOM是用来标记编码的大小端的,对UTF-8编码并没有用处。但是因为在Windows中是使用BOM来标记的文件的编码方式的,所以文件在Windows中使用记事本编辑过并保存为了UTF-8之后,文件格式就会变成UTF-8有BOM的编码格式,即在文件的开头有这样的三个字节:EF、BB、BF。在应用中,大多数时候并不支持这种格式,就比如这次遇到的问题,我们就要将文件重新编辑保存为UTF-8无BOM格式。