Gecko (Firefox)、WebKit (Safari、Chrome)、および Opera は、ベース 64 で文字列をエンコードするための非標準btoa
関数をサポートしています。UTF-8 としてエンコードされた文字列を含むベース 64 文字列を取得するには、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 がサポートされると思います。エンコーディングをどのように処理するかは誰にもわかりません。
window.open
PS: IE は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","");