【JavaScript】文字コードをS-JISとしてダウンロード

【JavaScript】文字コードをS-JISとしてダウンロード

文字列を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>

以上になります。試してみてください。

javascriptカテゴリの最新記事