From: "NARUSE, Yui" <naruse / airemix.jp>
Subject: [ruby-list:45330] Re: Windows コマンドプロンプトで UTF-8を出力するには
Date: Sat, 9 Aug 2008 21:06:10 +0900

るびきちです。

> >> いえ、出力が Shift_JIS 系であればいいだけで、
> >> ソースコードは UTF-8 でも大丈夫ですよ。
> > 
> > あれ、1.8 で出力の文字エンコードを指定する事はできましったけ?
> 
> できないので、puts をフックするとか、myputs を使うとか。
> def myputs(*arg)
>   puts NKF.nkf("--ic=UTF-8 --oc=Windows-31J", arg.map{|x|x.to_s}.join("\n"))
> end

$>にwriteメソッドを持つオブジェクトを代入するとか。

require 'kconv'
class StdoutHook
  def write(str)
    STDOUT.write NKF.nkf("--ic=UTF-8 --oc=Windows-31J", str.to_s)
  end
  $> = new
end

あとはputsでもprintでもprintfでもShift_JISで出力されます。

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/