node.jsのfs.writeFileでShift-jisのテキストを書き出す
node.jsのfs.writeFile()
を使って、Shift-jisのテキストファイルを読み出したいと思いました。ただし、node.jsはShift-jisをサポートしていないので、通常の方法で書き込むと、文字化けしてしまいます。
そこで、iconv-lite
を使います。iconv-liteは様々な文字コードを変換するモジュールです。
iconv-lite
npm
photo by Mr. Alex Garcia - Double Cliche on flickr
Shift-jisのテキストファイルを書き込む
それでは、Shift-jisのテキストファイルを、node.jsで書き出す簡単なサンプルコードを載せてみたいと思います。まずはiconv-lite
をnpmインストールします。
1 | $ npm init |
node.jsやコマンドラインについて
node.jsの環境を用意する方法やコマンドラインの使い方については以下を併せてご覧ください。
続いて、node.jsのコードを作成し、以下のように記述します。
1 | $ vim index.js |
1 | var fs = require('fs'); |
最後にnode.jsを実行します。
1 | $ node index.js |
iconv-liteの主な使い方
iconv-liteの基本的な使い方は、少し分かりにくいのですが、ざっくり言って以下の2つです。
デコード
入力された任意の文字コード文字列が入っているバッファを、文字コードのutf8に変換。
String
で返すエンコード
入力された文字列を、任意の文字コードで変換。
Buffer
で返す
そこで、上記のコードでは、書き出すテキストデータをSHift_JIS
に変換したバッファして、後続の処理に渡しています。
まとめ
いかがだったでしょうか?今回はnode.jsでShif-jis形式のテキストファイルを文字化けすることなく書き込む方法を解説しました。iconv-lite
などの変換モジュールを使うと様々な文字セットを開くたり、書き込んだりできます。