node.jsに関する記事一覧→ node.jsのまとめ
今回想定したシチュエーションは、ちょっと特殊かもしれませんが
euc-jpの文字コードの文字列をutf-8に変換したいけどiconvだとなんかうまくいかないので
外部プログラムのnkfを使って変換したものをまたスクリプト側で取得したい
とします、まあ nkfの部分を色々と別のものに読み替えればいいだけですね。
#!/usr/local/bin/node // rubyと同じ感じでコンソールに出力できるように const puts = console.log; const print = (str)=>{process.stdout.write(str)}; // 外部プログラムを呼び出す準備 const exec = require('child_process').exec; // ファイル操作をする準備 const fs = require('fs'); // euc-jp.txt には euc-jpの文字コードで書かれた内容が入っているとします // 非同期モードだといろいろめんどくさいので readFileSyncの同期モードで読み込んでます // これで euc_textにeuc-jpの文字列データ(データ自体はUint8Arrayの状態)が入っている状態を作ります // (例えば requestで取得した「euc-jpで書かれたwebページ」の bodyのデータに相当します) var euc_text = fs.readFileSync('euc-jp.txt'); // nkfを使って utf-8 に変換したいので // 第一引数のコマンド部分は 'nkf -w -Lu' // -Luオプションを付けることで改行コードをLFで統一してくれます // 第二引数に外部プログラムの結果を受けるコールバック関数をセットします // 外部プログラムの標準出力は stdoutにセットされています const nkf = exec( 'nkf -w -Lu', (err, stdout, stderr)=>{ puts(stdout); } ) // 外部プログラムの標準入力に euc_textの内容を流し込みます nkf.stdin.write(euc_text); // 外部プログラムの標準入力を閉じます // これをやらないと終わりを待ち続けるのでスクリプトの実行が固まります nkf.stdin.end();