世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2007年12月19日

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

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

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

トラックバック

http://yugui.jp/articles/721/ping

現在のところトラックバックはありません

コメント

松田 明 (2007年12月19日 20時54分57秒)

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

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

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

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

Yugui (2007年12月20日 14時47分44秒)

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

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

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

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2011年12月
  2. 2011年07月
  3. 2011年03月
  4. 2011年01月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system