[英]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.