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

我一直在使用节点的fs.readFileSync() ,传递"utf8"作为编码读取input。 当文件包含UTF8(0xEF 0xBF 0xBB)中的BOM字符时 ,它会将其转换为字节序列0xFE 0xFF,而不是Unicode编码。

为什么这样做? 为什么不以UTF8保存BOM的原始序列?

BOM是字符U + FEFF。 0xEF 0xBB 0xBF是它的UTF-8表示。 但通过阅读utf8的编码,您正在解码 UTF-8。 在这一点上,谈论“字节序列”变得没有意义。 你有一串字符 ,其中第一个是U + FEFF。