为什么 OS.File.writeAtomic with encoding: "utf-16" 不向创建的文件添加 BOM?

Why does OS.File.writeAtomic with encoding: "utf-16" not add a BOM to the created file?

我正在编写一个将文本区域内容保存到文件的 firefox 插件(我有理由不使用现有的)。完成工作的基本代码是:

let promise = OS.File.writeAtomic(path, contents, {encoding: "utf-16", tmpPath: path+".tmp"});

路径和内容是传递给包含函数的参数。该文件是用内容创建的,但开头没有 Unicode BOM。我错过了什么?

(仅供参考,用记事本打开文件并尝试另存为显示 Unicode。当重新保存为 Unicode 时,BOM 正确显示。)

我在 Windows 7 64 位上使用 Firefox 39.0.3。

BOM 不需要出现在任何 UTF 流中——它完全是一个 可选 字节顺序标记(也是编码的一个很好的猜测)。 Notepad 写一个 BOM 是因为 Notepad(和 Windows 一般)如何 likes to detect UTF-16 数据,但绝不要求 UTF-16 文件包含一个。

如果您需要 BOM,您需要自己在文本流中添加一个。