encoding-japaneseを使って、文字コードを検出する方法を紹介します。
encoding-japaneseを読み込む
scriptタグで読み込む方法とrequire()で読み込む方法があります。
scriptタグで読み込む場合は次のタグをHTMLファイルに追加します。
<script src="encoding.min.js"></script>
require()で読み込む場合は、encoding-japaneseをインストールして、
npm install encoding-japanese
require()でencoding-japaneseを読み込みます。
const Encoding = require('encoding-japanese');
文字コードを検出する
detect()の引数にバイト配列を渡すと、文字コードを得られます。
const detected = Encoding.detect(bytes);
次の文字コードに対応しています。
- ‘UTF32’ (detect only)
- ‘UTF16’
- ‘UTF16BE’
- ‘UTF16LE’
- ‘BINARY’ (detect only)
- ‘ASCII’ (detect only)
- ‘JIS’
- ‘UTF8’
- ‘EUCJP’
- ‘SJIS’
- ‘UNICODE’ (JavaScript Unicode Array)
サンプルコード
次のコードはバイト配列の文字コードを検出し、バイト配列を文字列に変換して出力するコードです。
const Encoding = require('encoding-japanese');
const euc = [0xA4, 0xB3, 0xA4, 0xEC, 0xA4, 0xCF, 0xA5, 0xC6, 0xA5, 0xB9, 0xA5, 0xC8, 0xA4, 0xC7, 0xA4, 0xB9, 0xA1, 0xA3];
const jis = [0x1B, 0x24, 0x42, 0x24, 0x33, 0x24, 0x6C, 0x24, 0x4F, 0x25, 0x46, 0x25, 0x39, 0x25, 0x48, 0x24, 0x47, 0x24, 0x39, 0x21, 0x23, 0x1B, 0x28, 0x42];
const sjis = [0x82, 0xB1, 0x82, 0xEA, 0x82, 0xCD, 0x83, 0x65, 0x83, 0x58, 0x83, 0x67, 0x82, 0xC5, 0x82, 0xB7, 0x81, 0x42];
const utf8 = [0xE3, 0x81, 0x93, 0xE3, 0x82, 0x8C, 0xE3, 0x81, 0xAF, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x81, 0xA7, 0xE3, 0x81, 0x99, 0xE3, 0x80, 0x82];
const print = (bytes) => {
// 文字コードの検出
const detected = Encoding.detect(bytes);
console.log(`文字コードは「${detected}」です`);
const text = Encoding.convert(bytes, {
from: detected,
to: 'UNICODE',
type: 'string',
});
console.log(`文字列は「${text}」です`);
};
[euc, jis, sjis, utf8].forEach(bytes => print(bytes));