node.jsのfs.readFile()
を使って、Shift-jisのテキストファイルを読み出したいと思いました。ただし、node.jsはShift-jisをサポートしていないので、通常の方法で読み込むと、文字化けしてしまいます。
そこで、iconv-lite
を使います。iconv-liteは様々な文字コードを変換するモジュールです。
Shift-jisのテキストファイルを読み込む
それでは、Shift-jisのテキストファイルを、node.jsで扱う簡単なコードを載せてみたいと思います。まずはiconv-lite
をnpmインストールします。
bash1 2
| $ npm init $ npm install iconv-lite --save
|
node.jsやコマンドラインについて
node.jsの環境を用意する方法やコマンドラインの使い方については以下を併せてご覧ください。
続いて、node.jsのコードを作成し、以下のように記述します。
index.js1 2 3 4 5 6 7 8 9 10
| var fs = require('fs'); var iconv = require('iconv-lite');
fs.readFile('path-to/shift-jis.txt', function(err, data){ if (err) throw err; var buf = new Buffer(data, 'binary'); var retStr = iconv.decode(buf, "Shift_JIS"); console.log(retStr); });
|
読み出そうとするテキストファイルの文字セット(エンコード)がUTF-8の場合は、上記のコードのようにdata.toString('UTF-8')
だけで文字を取り出す事ができます。
だたし、テキストファイルの中身がSHIFT-JISの場合は、iconv-liteを使います。具体的にはiconv.decode(buf, "Shift_JIS")
を使い、文字コードをSHIFT-JISからUTF-8に変換します。
最後にnode.jsを実行します。
bash1 2
| $ node index.js (ここにテキストファイルshift-jis.txtの中身が表示される)
|
iconv-liteの主な使い方
iconv-liteの基本的な使い方は、少し分かりにくいのですが、ざっくり言って以下の2つです。
そこで、上記のコードでは、読み込んだテキストデータを一端バッファに変換して、iconv-lite.decode()
に渡しています。
まとめ
いかがだったでしょうか?今回はnode.jsでShif-jis形式のテキストファイルを文字化けすることなく開く方法を解説しました。通常、node.jsではutf-8形式しか開けませんが、iconv-lite
などの変換モジュールを使うと様々な文字セットを開くことができます。