The input file should be UTF8 without a byte-order-mark(BOM)

byte-order-mark = (BOM)

在unicode诸编码中,字节顺序标记-BOM被用于标记编码高低位的顺序。
.BOM是一个特殊的unicode字符。早期标准定义其为“零长度、非断行的空格”,但后期标准已不再这样规定。
.utf16编码使用内容“FE FF”的BOM来标记big ending,即高位结束符;用“FF EE”标记 small ending,即低位结束符。
.utf8使用内容为“EF BB BF ”的BOM,用于指示文本内容为utf8编码。windows下记事本等编辑器会自动添加这个BOM。在不支持或者未识别utf8编码的环境下,该BOM会被解析成乱码“"”,导致问题。utf8编码的php源文件更是会因为bom而错误输出、影响header写入等等。
.编程等严格环境,utf8编码的文档应保存为“无BOM”的格式。
原文地址:https://www.cnblogs.com/waterdragon/p/4515066.html