![](/img/trans.png)
[英]Get the browser's highlighted text into a UTF8 encoded javascript string
[英]Saving binary data in a browser without it getting UTF8 encoded on download
我的Web应用程序以base64编码的字符串形式接收数据,该字符串使用atob进行解码,并通过URL.createObjectURL()进行存储。 然后,通过右键单击另存为对话框下载此数据。 当源文件经过ASCII编码时,下载的文件始终与源文件匹配。 但是,当源文件只是纯二进制数据时,情况并非如此。 非ascii编码的下载文件与其源文件的差异似乎显示下载的文件是UTF-8编码的。 如何解决此问题? 请注意,我被锁定使用Firefox 10。
将字符串转换为Arraybuffer,它应该可以工作。 如果有任何方法,您可以直接将数据获取到数组缓冲区中,而无需传递字符串,这将是最佳解决方案。
以下代码在FF10中进行了测试,并使用了已经过时的MozBlobBuilder。
var str="",
idx, len,
buf, view, blobbuild, blob, url,
elem;
// create a test string
for (var idx = 0; idx < 256; ++idx) {
str += String.fromCharCode(idx);
}
// create a buffer
buf = new ArrayBuffer(str.length);
view = new Uint8Array(buf);
// convert string to buffer
for (idx = 0, len = str.length; idx < len; ++idx) {
view[idx] = str.charCodeAt(idx);
}
blobbuild = new MozBlobBuilder();
blobbuild.append(buf);
blob = blobbuild.getBlob('application/octet-stream');
url = URL.createObjectURL(blob);
elem = document.createElement('a');
elem.href = url;
elem.textContent = 'Test';
document.body.appendChild(elem);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.