Node.jsのfs.readFile()の第二引数はオブジェクトに変更され、文字列指定によるエンコード指定は削除されたと思っていた。しかし、第二引数が文字列になっているコードをたてつづけに見る機会があったので、文字列を渡した場合にencodingへセットしてくれる機能がそのまま残っていることがちゃんと調べたらわかった。

v0.10.28のFile Systemモジュールでは第二引数が文字列の時はencodingにその値が指定されている。なのでオブジェクトを作らず以下のように書くことも可能なままだった。

fs.readFile('uf8.txt', 'utf8', function (err, data) {
  if (err) throw err;
  console.log(data);
});

今まで書いてた苦労(スニペットだけど)は何だったのか。でも、ドキュメントにちゃんと書かれていないってことは、後方互換性のために残してあるだけで、実際には使わない方が良いってことなのかな。