【问题标题】:NodeJs - how to make function fs.writeFile write with BOM?NodeJs - 如何使用 BOM 编写函数 fs.writeFile?
【发布时间】:2012-12-01 07:20:20
【问题描述】:

我正在使用 nodeJS v0.8.6 和本机库 fs。这是我的代码:

var filesys = require('fs');
filesys.writeFile('test.txt', 'This is an example with accents : é è à ','utf8', function (err) {});

问题是它在没有 BOM 的情况下以 utf8 写入(我使用 notepad++ 来验证它)并且它在 Windows 上的写字板中不起作用(重音显示不好)。问题是我需要女性使用写字板很好地阅读该文件。

如何将 BOM 添加到我的文件中?

【问题讨论】:

    标签: node.js utf-8 byte-order-mark


    【解决方案1】:

    UTF-8 不需要 bom,当然你也可以自己添加。

    filesys.writeFile('test.txt', '\ufeffThis is an example with accents : é è à ','utf8', function (err) {});
    

    【讨论】:

    • UTF-8 在健全的操作系统和应用程序中可能不需要 BOM,但在 Windows 下几乎总是需要。例外情况主要是从健全的环境移植的跨平台代码。
    • 修复了我向客户端发送 CSV 文件的问题,在类 Unix 上运行良好,在 Windaube 上运行良好。这解决了它!
    • 我正在编写一个 text/csv 文件,并像这里一样在 BOM 中明确使用“utf8”,但是当我在 Excel 中打开文件时它仍然无法正确显示(没有整个导入过程但只打开文件)。任何想法为什么?
    【解决方案2】:

    我在这个答案上详细阐述了这个答案-Adding UTF-8 BOM to string/Blob。

    这是一个非常稀疏的答案,没有详细说明为什么这有效。 FEFF 字节实际上是 UTF16LE BOM,所以前面的答案很混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-11
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      相关资源
      最近更新 更多