文字コード判別
下記ライブラリでできる。
lwcで使ってみて他の処理もあるので確定ではないけど
レコード数が1000件超えるとあやしいかもしれない
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Encoding.jsでファイルを指定して文字コード変換・検出するデモ</title>
<style>
body {
font-family: tahoma, "Helvetica Neue", Helvetica, sans-serif;
margin: 1em;
}
h1 {
margin: 1em 1em 2em 3em;
}
#file {
margin-bottom: 1em;
}
#detected-encoding {
font-weight: bold;
}
textarea {
width: 98%;
height: 120px;
font-family: consolas, monospace;
}
footer {
margin-top: 1em;
font-weight: bold;
}
</style>
</head>
<body>
<h1><a href="https://github.com/polygonplanet/encoding.js">Encoding.js</a>でファイルを指定して文字コード変換・検出するデモ</h1>
<p>
テキストファイルを読み込んで文字コード変換して表示します。
<br>
通常、ブラウザで Shift_JIS や EUC-JP で書かれたファイルを読み込むと文字化けしますが、 encoding.js で文字コードを変換して文字化けしないようにします。
</p>
<p>
適当なファイルを選択してみてください。
</p>
<input type="file" id="file">
<div id="detected-encoding"></div>
<fieldset>
<legend>ファイル内容そのまま表示:</legend>
<div>
<textarea id="raw-result" rows="5" cols="80"></textarea>
</div>
</fieldset>
<fieldset>
<legend>encoding.js で文字コードを変換して表示:</legend>
<div>
<textarea id="result" rows="5" cols="80"></textarea>
</div>
</fieldset>
<script src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/1.0.29/encoding.min.js"></script>
<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);
console.log(e.target.result);
console.log(codes);
var detectedEncoding = Encoding.detect(codes);
document.getElementById('detected-encoding').textContent = 'ファイルから検出した文字コード: ' + detectedEncoding;
try {
var rawResult = String.fromCharCode.apply(null, codes);
var unicodeString = Encoding.convert(codes, { to: 'unicode', from: detectedEncoding, type: 'string'});
document.getElementById('raw-result').value = rawResult;
document.getElementById('result').value = unicodeString;
} catch (e) {
// Uncaught RangeError: Maximum call stack size exceeded
alert('ファイルサイズが大きすぎます');
}
};
reader.readAsArrayBuffer(file);
}
document.getElementById('file').addEventListener('change', onFileSelect, false);
</script>
<footer>
<a href="https://github.com/polygonplanet/encoding.js">Repository in GitHub</a>
</footer>
<a href="https://github.com/polygonplanet/encoding.js"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://camo.githubusercontent.com/121cd7cbdc3e4855075ea8b558508b91ac463ac2/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f677265656e5f3030373230302e706e67" alt="Fork me on GitHub" data-canonical-src=""></a>
</body>
</html>
preタグとか使えるようにならんもんなんかね。。
面倒だ。