ratio - rational - irrational

« お役所巡り記 | Main | ルー語の部屋 »

2007年12月19日

ターミナルまるごとコード変換

先日の東京・関東Rubyist忘年会の席で、「UTF-8で日本語を記述したRspecをwindowsで動かすと文字化けして困る」という話があった。 で、「それcocotでできるよ」と言おうとしたのだけど暫く使ってなかったのでとっさに"cocot"の名前が出てこなかった。

cocotは「端末(tty)とプロセスの間に割り込んで、文字コード変換を行うツール」。だから、cocotの下でシェルを動かしてしまえばあとは意識せずにコード変換してくれる。 シェル丸ごとだと今度は標準コマンドの出力が化けるかも知れないけど、だったらalias spec="cocot -p UTF-8 spec"とかすればいい。



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/719

コメント

忘年会での質問者です。さっそくのお答え、ありがとうございます。
教えていただいた cocotを試してみたんですが、今のところうまく行ってません・・・。
Yuguiさんの想定されている環境って、Rubyとか Rubygemsとか Rakeとかを全部 Cygwin側でインストールしているという理解で良いんでしょうか?
現在こちらの環境では全て Win32版を使用しているので、--colourを付けると
rake spec
の結果が標準出力ではなくて win32consoleのほうに持って行かれてしまい、おそらく RSpecの実行結果が cocotにぜんぜん渡っていない状態になってしまっています。
結果として、コンソールには肝心の一番見たいものがまったく表示されません。

ちなみに、同様の理由で、Cygwinのシェルから実行しても、chcp 65001 しても、specの出力結果を nkf にパイプで食わせても、やっぱり何も表示されなくなります。つまり、「Win32版の RSpecは色をつけると win32consoleに出力したがるし、win32consoleは標準出力じゃないから」です。

ということで、やっぱり全部 Cygwinで Ruby環境を作るしかないのかなぁ、と思っているのですが、いかがでしょうか?。

以上、ひと様のブログで長文コメント、失礼いたしました。

  • Posted by: 松田 明 at 2007年12月19日 20:54

なるほど。お役に立てずに申し訳ないです。

あとは、RSpecのFormatterを上書きしてコード変換するぐらいですかね。win32consoleに修正を入れるよりはそっちのほうが楽でしょうね。

cygwin rubyは重いので、それだったらcoLinuxをおすすめします。

  • Posted by: Yugui at 2007年12月20日 14:47

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2007 Yugui

Powered by Movable Type 3.2-ja-2