JSでファイルをDL。ついでにSJISに変換(encoding.js)

javascriptでファイルをダウンロードさせる必要があった。しかもShift-JISに変換する必要もあった。

作成日:2020-01-07, 更新日:2020-01-07

基本

リンクタグにblobをセットさせる感じでいく。

文字コードの変換が不要な場合

▼HTML部

<a id="download" download="sample.txt">ダウンロード</a>

▼Script部

// DLさせるテキストをBLOBでファイルにする
var str = 'こんにちは、今日は良い天気ですね!';
var blob = new Blob([str], {type: 'text/plain'});

// ▼コンソールに出力するときは、コメント解除
//var reader = new FileReader();
//reader.onload = function(){
//	console.log(reader.result);
//};
//reader.readAsText(blob);

// href属性にblobをセット
var aTag = document.getElementById('download');
aTag.href = window.URL.createObjectURL(blob);

文字コードをSJISに変換させる場合

▼HTML部

<a id="download" download="sample.txt">ダウンロード</a>

▼Script部

// DLさせるテキストをBLOBでファイルにする
var str = 'こんにちは、今日は良い天気ですね!' + "\r\n"
        + 'そんなことはないですよ!' + "\r\n";

var toEnc = 'sjis';

var codes = Encoding.stringToCode(str);
var shiftJisCodeList = Encoding.convert(codes, toEnc, 'Unicode');
var uInt8List = new Uint8Array(shiftJisCodeList);

var blob = new Blob([uInt8List], {type: 'text/plain'});

// ▼コンソールに出力するときは、コメント解除
//var reader = new FileReader();
//reader.onload = function(){
//	console.log(reader.result);
//};
//reader.readAsText(blob);

// href属性にblobをセット
var aTag = document.getElementById('download');
aTag.href = window.URL.createObjectURL(blob);

関連項目

JSでファイルを読み込みUnicodeに変換(encoding.js)