Ruby製のツールを扱う際にデフォルトエンコーディングがUTF-8じゃなくて人生厳しい場合がある
やりたかったこと
自分が使ったわけじゃないんですけど、compassを使うときにSASSファイル等はUTF-8なんだけどWindows環境でcompassを使ってビルドしようとするとデフォルトエンコーディングの違いからWindows-31Jじゃないプギャーと言わるらしい。
一般的なやり方と回避方法
当然ググったりしてみるんですけど、そうするとターミナル上でset LANG=ja_JP.UTF-8したり環境変数にLANGを登録しておけば良いと書いてある。 だがしかし、どうもRuby1.9系ではそれで対応できるらしいけど、Ruby2.0系では対応できないようだ。
追記
コメント欄で教えてもらいましたが、set RUBYOPT=-EUTF-8でエンコーディングを指定すれば良いのでした*1。そっちのほうが良い気がしますので続きは読まなくて良いです!! 参考:http://doc.ruby-lang.org/ja/2.0.0/doc/spec=2frubycmd.html#cmd_option
検証
set LANGでの検証
これでダメだったから質問が僕の所に来たわけですが、念のため確認してみましょう。
Ruby 1.9.3
UTF-8になる。
Ruby2.0.0
UTF-8にならない。
chcpでの検証
そもそもターミナル上のエンコーディングを変更するならchcpを使う必要があるのでは?と思い立つ。以前ちょっとchcpを使った事があったので思い出した 。
chcp 65001
としてUTF-8にしてどうなるのかを確認した。chcpを実行するとターミナルの表示がリセットされるので上記と違う形になっているけど、新しくターミナルを立ち上げなおしているので、実行前はWindows-31Jと表記されていることを確認している。
Ruby 1.9.3
UTF-8になった。
Ruby 2.0.0
UTF-8になった。
結論
chcpで文字コードを変えるとフォントの問題などで日本語を出力できない気がするので、画面に何かを表示するような類の問題だったらこれでは解決できないかもしれない*2。逆に、そういう事でも差し支えなければchcp 65001
しておくのが良いと思う。
こういうのWindowsマスター的には当然のことなんでしょうか。あまり情報が無いように感じました。今回はたまたまchcpの存在をしっていたからなんとかなったけど、知らなかったらお手上げだった気がします……。
どうしても書かなくてはならない宣伝
書籍を出版しましたのでぜひともご購入頂ければと思います!! ありがたい話で売れ行きは好調のようです。もしかしたら書店で買えない*3かもしれないので、ここでポチッとしておくと良いかもしれません。
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (3件) を見る