壁虎(Firefox),WebKit(Safari,Chrome)和Opera支持非標準的btoa
函數用於編碼64位的字符串。爲了獲得包含字符串的64位字符串,編碼爲UTF-8,您需要使用encodeURIComponent
- unescape
詭計。 encodeURIComponent
將字符串編碼爲UTF-8 URL,但unescape
將每個%xx
解碼爲單個字符。 btoa
需要一個任何你想要的編碼的二進制字符串。
var base64 = btoa(unescape(encodeURIComponent(data)));
window.open("data:text/plain;charset=UTF-8;base64,"+base64,"UTF-8 Text");
當然這在IE中不起作用,但我認爲IE 10將支持Blob
-API。誰知道它將如何處理編碼。
PS:IE似乎不能window.open
data:-urls,並且無論如何都會有一個荒謬的小url長度限制。
PPS:這個工作對我來說在Chrome:
var b = new Blob(["➀➁➂ Test"],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"});
var url = URL.createObjectURL(b);
window.open(url,"_blank","");
您是否嘗試過在聲明head標籤編碼? http://tlt.its.psu.edu/suggestions/international/web/tips/declare.html – NoBugs
在生成的文檔中追加一個元素在事實之後沒有做任何事情,並且不可能追加<?xml encoding = ...?>處理對文本/普通文檔的指令,因爲它們生成text/html類型的非XML文檔。即使我可以,我懷疑它會在文檔加載完成後影響文檔的編碼。 –
Firefox 8?那是夜間建造嗎?你有沒有在穩定的Firefox 5中試用過它? – NoBugs