如何将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打开效果
- 带
\ufeffBOM时LibreOffice Calc打开效果 - 无BOM时Excel打开效果
- 带BOM时Excel打开效果
内容的提问来源于stack exchange,提问作者Jerryyyz
相关产品推荐
相关产品推荐

