【发布时间】:2019-09-03 05:09:34
【问题描述】:
我想下载一些二进制数据,但 Chrome 将其强制为 utf-8,这会弄乱字节。如果我将 href 设置为数据 URI 并使用 base64 编码,它可以工作,但我想避免这种情况并改用 BLOB。
有没有办法阻止 Chrome 将此二进制数据转换为 utf-8?
const data = "\x00\xff\xfe\xe2"
console.log(data)
const file = new Blob([data])
const a = document.getElementById("a")
const url = URL.createObjectURL(file)
a.href = url;
a.download = "test.txt";
<a id="a">Download</a>
在这个例子中,你可以看到我的字符串包含字节
00 ff fe e2
然后我将该字符串转换为 blob。但是当你在 Chrome 中下载文件并再次查看字节时,你会发现
20 c3 bf c3 be c3 a2
相反。
我认为正在发生的是 chrome 获取每个字节,将其读取为 utf-16 并将其转换为 utf-8。例如,fe 在读取为 utf-16 时为 þ,但在 utf-8 中为 c3 be
【问题讨论】:
标签: javascript