Linux上のCasperJS/PhantomJS/SlimerJSからShift_JIS/EUC-JPのページを取り扱う事が出来なくて困っていたのですが、解決策が分かりました。
PhantomJS、SlimerJSはWebページのスクリーンショットやPDFを作ったり、JavaScriptを使った動的サイトをテストする為に利用されているヘッドレスクライアント(画面の無いWebブラウザ。PhantomJSはWebKit、SilmerJSがGecko)です。
PhantomJSやSlimerJSで出力文字エンコーディングを変換することは可能ですが、取り扱うページがShift_JISやEUC-JPの場合にどうすれば良いのか検索しても見つかりませんでした。PhantomJSのマニュアルやサンプルコードなどを見ても何処にも入力文字エンコーディングを指定する方法が書いてありません。
CasperJSのバックエンドとしてPhantomJSを利用していて、SlimerJSでは試していませんが恐らく同じだと思います。違っていたらコメントをお願いします。使用している環境はVMware上のScientific Linux 6.4 x86_64です。
Googleで幾ら検索しても出てきませんでしたが、解ってしまえば簡単です。
Scientific LinuxやCentOSで日本語を選択するとロケールが
LANG="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"
になっていますが、これを強制的に
LANG="ja_JP.Shift_JIS"
LC_ALL="ja_JP.Shift_JIS"
などに変更すれば、Shift_JISやEUC-JPのWebページの情報も正しく処理できるようになりました。
ロケールだと直ぐに気付けば、、、
結構時間を無駄にしました。同じことで悩んでいる人がこのページを見て無駄な時間を過ごさないことを願います。
Leave a Comment