Node.jsで文字コードの自動判別と自動変換

  • 72
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。
  • 文字コードの自動判別 - jschardet
  • 文字コードの変換 - iconv

流れとしてはjschardetを使って文字コードを自動判別し、その文字コードからiconvを使ってUTF-8に変換します。

shoma2daをフォロー

まずはモジュールのインストール。

$ npm install jschardet --save
$ npm install iconv --save

文字コード判定をしてみます。

//test.jsに書きました
var jschardet = require('jschardet');

var notUtf8String = /* どこかから持ってきたUTF-8じゃなさそうな文字列 */;

var detectResult = jschardet.detect(notUtf8String);
console.log(detectResult);

実行してみます。

$ node test.js
{ encoding: 'ISO-8859-2', confidence: 0.7299161297501421 }

今回の例ではISO-8859-2っぽいよ!というのが出ました。

続いて変換です。
iconvを使えばこちらもシンプルにできます。

var Iconv = require('iconv').Iconv;
var iconv = new Iconv('ISO-8859-2', 'UTF-8//TRANSLIT//IGNORE');
var convertedString = iconv.convert(notUtf8String).toString();

合わせて書くと

var jschardet = require('jschardet');
var Iconv = require('iconv').Iconv;

var notUtf8String = /* どこかから持ってきたUTF-8じゃなさそうな文字列 */;

//文字コード判定
var detectResult = jschardet.detect(notUtf8String);

//判定した文字コードからUTF-8に変換
var iconv = new Iconv(detectResult.encoding,'UTF-8//TRANSLIT//IGNORE');
var convertedString = iconv.convert(notUtf8String).toString();

shoma2daをフォロー