CSV 文件 Excel 中的特殊字符问题,Sheetjs 为 utf8 CSV 文件添加 BOM

Special character issue in Excel for CSV file, Sheetjs prepend BOM for utf8 CSV files

我正在使用 https://www.npmjs.com/package/xlsx 库创建 CSV。

这是写CSV代码的最终代码

let workbook: WorkBook = this.workBookCreator.getWorkbook(workBookName);

return this.xlsxModule.write(workbook, {
     bookType: format,
     type: "buffer"
});

然后将上传到 S3 存储桶。

下载文件

window.location.href = fileLocation;

其中 fileLocation 是带有 GET 请求的 URL 预签名 S3。

当下载的文件在 Microsoft Excel 中打开时,由于 UTF-8 字符集无法被 EXCEL 识别,特殊字符被弄乱了。

任何人都可以帮助我,我如何在创建 CSV 以支持所有特殊字符到 Excel 时设置字符集 UTF-8?

到目前为止我已经尝试了以下解决方案:

  1. 试图更改 XLSX 的缓冲区类型
  2. 为缓冲区转换添加了 IconV 和 IconV-lite
  3. 更改了 S3 存储桶文件的内容类型。
  4. 尝试将缓冲区类型更改为字符串

我知道我们可以在编写时将 BOM 添加到 CSV 文件中。但是找不到我可以在前面添加的地方。

所以,我终于找到了解决方案(尝试了太多 google 搜索)

我使用了 iconv-lite npm 包

这里是代码:

const txt = '\uFEFF'+ iconV.decode(CSVString, 'utf8');
CSVString = iconV.encode(txt, 'utf8');

希望,我可以拯救别人的一天!