提问人:Jerryyyz 提问时间:7/6/2023 最后编辑:Adam MillerchipJerryyyz 更新时间:7/22/2023 访问量:140
使用 BOM 将 UTF-8 数据转换为 UTF-16
Converting UTF-8 data to UTF-16 with BOM
问:
我有一个变量,它包含我需要的所有数据。我想将此数据转换为我希望 Excel 通过打开文件来识别数据,而无需按钮。csv
UTF-16LE
Get Data
我尝试使用此解决方案,虽然 LibreOffice Calc 确实识别它是一个文件,但 Excel 无法正确解码希腊字符。UTF-16
这是我拥有的 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}
)
我还尝试在文件的开头添加一个 BOM 字符,但这会使其被识别为文件(根据 Notepad++)。当我尝试将“UTF-BOM字符”转换为不同的字母时。\uFEFF
UTF-8 BOM
\uFFFE
LibreOffice Calc 在没有 BOM 的情况下打开文件
答:
0赞
Jerryyyz
7/10/2023
#1
在将内容转换为 UTF-16 之前,我通过添加 UTF-8 BOM 解决了这个问题。
评论