You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将UTF-8格式CSV转为UTF-16LE带BOM使Excel正确识别希腊字符

将CSV转换为UTF-16LE以让Excel直接识别的问题

我有一个包含所有所需数据的csv变量,希望将其转换为UTF-16LE格式,这样直接打开文件时Excel就能识别数据,无需使用Get Data按钮。试过相关解决方案后,LibreOffice Calc能识别其为UTF-16文件,但Excel无法正确解码希腊字符。

以下是我使用的JavaScript代码:

csv = csvRows.join('\r\n')

var byteArray = new Uint8Array(csv.length * 2);
for (var i = 0; i < csv.length; i++) {
  byteArray[i * 2] = csv.charCodeAt(i) // & 0xff;
  byteArray[i * 2 + 1] = csv.charCodeAt(i) >> 8 // & 0xff;
}

var blob = new Blob([byteArray], { type: 'text/csv', encoding: "UTF-16LE" });
var url = URL.createObjectURL(blob);
sendFileToClient(url, this.el.id + ".csv")

此前在Elixir中遇到类似问题,我通过:unicode模块解决,代码如下:

csv =
      :unicode.characters_to_binary(
        :unicode.encoding_to_bom(:utf8) <> build_csv(data),
        :utf8,
        {:utf16, :little}
      )

我尝试在文件开头添加\uFEFF BOM字符,但Notepad++将其识别为UTF-8 BOM文件;添加\uFFFE则导致字符显示异常。不同情况下的文件打开效果如下:

  • 无BOM时LibreOffice Calc打开效果
  • 带\ufeff BOM时LibreOffice Calc打开效果
  • 无BOM时Excel打开效果
  • 带BOM时Excel打开效果

内容的提问来源于stack exchange,提问作者Jerryyyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:23:13