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?
到目前为止我已经尝试了以下解决方案:
- 试图更改 XLSX 的缓冲区类型
- 为缓冲区转换添加了 IconV 和 IconV-lite
- 更改了 S3 存储桶文件的内容类型。
- 尝试将缓冲区类型更改为字符串
我知道我们可以在编写时将 BOM 添加到 CSV 文件中。但是找不到我可以在前面添加的地方。
所以,我终于找到了解决方案(尝试了太多 google 搜索)
我使用了 iconv-lite npm 包
这里是代码:
const txt = '\uFEFF'+ iconV.decode(CSVString, 'utf8');
CSVString = iconV.encode(txt, 'utf8');
希望,我可以拯救别人的一天!
我正在使用 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?
到目前为止我已经尝试了以下解决方案:
- 试图更改 XLSX 的缓冲区类型
- 为缓冲区转换添加了 IconV 和 IconV-lite
- 更改了 S3 存储桶文件的内容类型。
- 尝试将缓冲区类型更改为字符串
我知道我们可以在编写时将 BOM 添加到 CSV 文件中。但是找不到我可以在前面添加的地方。
所以,我终于找到了解决方案(尝试了太多 google 搜索)
我使用了 iconv-lite npm 包
这里是代码:
const txt = '\uFEFF'+ iconV.decode(CSVString, 'utf8');
CSVString = iconV.encode(txt, 'utf8');
希望,我可以拯救别人的一天!