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

本当はUTF8に変換しようとしたけど、ブラウザで表示する分にはUnicodeでOKっぽい

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

基本

1.「encoding.js」をDLして、読み込ませる
2.javascriptで処理を書く(File API を使用したファイルの文字コード検出)

1.「encoding.js」をDLして、読み込ませる

GitHub - polygonplanet/encoding.js」から「encoding.js」をDLしてくる

2.javascriptで処理を書く(File API を使用したファイルの文字コード検出)

公式にサンプルがあったのでそのまま記載

<script type="text/javascript" src="〇〇〇/encoding.min.js"></script>

<input type="file" id="file">
<div id="encoding"></div>
<textarea id="result" rows="5" cols="80"></textarea>

<script>
function onFileSelect(event) {
  var file = event.target.files[0];

  var reader = new FileReader();
  reader.onload = function(e) {
    var codes = new Uint8Array(e.target.result);
    var encoding = Encoding.detect(codes);
    document.getElementById('encoding').textContent = encoding;

    // Convert encoding to unicode
    var unicodeString = Encoding.convert(codes, {
      to: 'unicode',
      from: encoding,
      type: 'string'
    });
    document.getElementById('result').value = unicodeString;
  };

  reader.readAsArrayBuffer(file);
}

document.getElementById('file').addEventListener('change', onFileSelect, false);
</script>

「unicode」は問題無いんだけど「utf8」や「sjis」とかだと文字化けを起こす・・・なぜだろう?
とりあえずブラウザで表示させたいだけだから問題無しではあるんだけど、気持ち悪い。

関連項目

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

公式

GitHub - polygonplanet/encoding.js