Node.js为什么将BOM字符转换为0xFE 0xFF



我一直在处理节点的fs.readFileSync(),将"utf8"作为读取输入的编码。当文件包含UTF8中的BOM字符(0xEF 0xBF 0xBB)时,它会将其转换为字节序列0xFE 0xFF,即Unicode编码。

它为什么要这样做?为什么不在UTF8中保留BOM的原始序列?

BOM是字符U+FEFF。0xEF 0xBB 0xBF是其UTF-8表示形式。但是,通过使用utf8编码进行读取,您就可以解码UTF-8。在这一点上,谈论"字节序列"变得毫无意义;您有一个字符串,其中第一个是U+FEFF。

最新更新