文字列をaタグを使ってダウンロードする際に文字コードをs-jisにしたかったのですが、utf-8になってしまい困ったので記載しておきます。
目次
対応方法
早速ですが対応方法を記載します。
初めに「encoding.js」というライブラリを読み込みます。CDNが用意されているので以下のように読み込みます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/1.0.30/encoding.min.js"></script>
次に以下のように記載し、文字コードを変更します。
var content = "文字コードを変換してダウンロードする文字列";
var encodingType = 'sjis';
var target = Encoding.stringToCode(content);
var shiftJisTarget = Encoding.convert(target, encodingType, 'Unicode');
var downloadTarget = new Uint8Array(shiftJisTarget);
var blob = new Blob([downloadTarget], {"type": 'text/plain'});
そして、作成したblobをaタグに指定してダウンロードできるようにします。
var filename = "ダウンロードしたときのファイル名";
var link = document.createElement('a');
link.download = filename;
link.href = window.URL.createObjectURL(blob);
これでsift-jisでダウンロードできるaタグが作成されます。
まとめると例えば以下のような感じになるかと思います。
<script src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/1.0.30/encoding.min.js"></script>
<script type='text/javascript'>
//filenameにダウンロードするときのファイル名を指定
//contentにダウンロードする文字列を指定
function download(filename, content){
var encodingType = 'sjis';
var target = Encoding.stringToCode(content);
var shiftJisTarget = Encoding.convert(target, encodingType, 'Unicode');
var downloadTarget = new Uint8Array(shiftJisTarget);
var blob = new Blob([downloadTarget], {"type": 'text/plain'});
var link = document.createElement('a');
link.download = filename;
link.href = window.URL.createObjectURL(blob);
//作成したlinkをhtml内に設置する
}
</script>
以上になります。試してみてください。
コメントを書く