原因
当我们在idea中运行该项目时会出现如下一个错误:
这就是表示在文件的开头添加了BOM导致的,所以才会导致IDEA不能正确读取.java文件从而程序出错。
解决办法
方式一
- 选择你出错的那个文件右击。选择remove BOM 即可。
方式二:
- 在IDEA的右下角把文件转为其他的格式再转回UTF-8,这种只能针对少的文件,可是太多的就很麻烦了。
关于BOM
这里就先来说明一下什么是BOM。
什么是BOM?
BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。
在不同的Unicode编码中,对应的bom的二进制字节如下:
FE FF UTF16BE
FF FE UTF16LE
EF BB BF UTF8
因此我们可以根据文件头部的几个字节和上面的表格对应来判断该文件是哪种编码形式。
存在的问题?
虽然BOM字符起到了标记文件编码的作用但是他并不属于文件的内容部分,所以会产生一些问题:
1.在某些使用场景下就会有问题。例如我们把几个JS文件合并成一个文件后,如果文件中间含有BOM字符,就会导致浏览器JS语法错误。
2.PHP就不能识别bom头,PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!