java:解决报错非法字符: ‘\ufeff‘以及什么是BOM
背景
运行 JAVA 项目后,报错提示:非法字符: '\ufeff'
,如图:
但是我在这个报错的文件中并没有搜到这个字符,那到底是什么原因
什么是BOM
BOM(Byte Order Mark),隐藏字符,字节顺序标记,出现在文本文件头部,用于标识文件是采用哪种格式的编码。
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP、JAVA等来说,就会识别为非法字符。
Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。
解决
选中报错的文件,在 IDEA 右下角点击 UTF-8,再点击 Remove BOM,就可以啦
全局设置的时候也要禁用掉