node.jsのfs.writeFile()
を使って、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 11 12 13 14 15 16 17 18 19 20 21
| var fs = require('fs'); var path = require('path'); var iconv = require('iconv-lite');
var sampleTextData = "この内容が書き出しされます"; var dist = path.join( process.env.PWD || process.cwd() , "書き出されたファイル.txt");
fs.writeFileSync( dist , "" ); var fd = fs.openSync( dist, "w"); var buf = iconv.encode( sampleTextData , "Shift_JIS" ); fs.write( fd , buf , 0 , buf.length , function(err, written, buffer){ if(err) throw err; console.log("ファイルが正常に書き出しされました"); });
|
最後にnode.jsを実行します。
bash1 2
| $ node index.js (ファイルが書き出される)
|
iconv-liteの主な使い方
iconv-liteの基本的な使い方は、少し分かりにくいのですが、ざっくり言って以下の2つです。
そこで、上記のコードでは、書き出すテキストデータをSHift_JIS
に変換したバッファして、後続の処理に渡しています。
まとめ
いかがだったでしょうか?今回はnode.jsでShif-jis形式のテキストファイルを文字化けすることなく書き込む方法を解説しました。iconv-lite
などの変換モジュールを使うと様々な文字セットを開くたり、書き込んだりできます。