web-dev-qa-db-ja.com

指定された文字セットを使用してBLOBコンテンツをダウンロードする

Blob文字セットを実際に変更することは可能ですか?私は何時間も試していますが、うまくいきません。 こちら をご覧ください。

jQuery("#download").click(function() {
    var csv_content = jQuery("#csv").val(),
        download = document.createElement("a"),
        blob = new Blob([csv_content], { type: "text/csv;charset=ISO-8859-1" });

    download.href = window.URL.createObjectURL(blob);
    download.download = "test.csv";

    var event = document.createEvent("MouseEvents");
    event.initMouseEvent(
        "click", true, false, window, 0, 0, 0, 0, 0
        , false, false, false, false, 0, null
    );
    download.dispatchEvent(event);    
});

CSVをエクスポートしてExcelで開く必要がありますが、常にUTF-8で保存され、Excelで処理できません。

26
David Rodrigues

投稿する前に解決策を見つけました。

実際、文字セットの変更は解決されていません。ただし、ダウンロードプロセス用にUTF-8ヘッダーを送信したため、Excelはファイル形式を正しく理解できました。 ErikTöyräのこの回答のおかげ

blob = new Blob(["\ufeff", csv_content]);
103
David Rodrigues

あなたがcsvにいくつかのシンボルがあり、受け入れられた解決策が問題を解決していない場合。

blob = new Blob(["\ufeff", csv_content]);
for csv_content you can try like below.
function b64DecodeUnicode(str: any) {        
        return decodeURIComponent(atob(str).split('').map((c: any) => {
            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
        }).join(''));
    }
0
Diwakar