为什么 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,您需要自己在文本流中添加一个。
我正在编写一个将文本区域内容保存到文件的 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,您需要自己在文本流中添加一个。