2010年7月28日水曜日

IronRuby コマンドプロンプトで UTF-8を出力するには

[ruby-list:45331] Re: Windows コマンドプロンプトで UTF-8を出力するには
を参考にして。
# utf8ntest.rb
require 'iconv'
class StdoutHook
def write(str)
STDOUT.write Iconv.conv('shift-jis', 'utf-8', str.to_s)
end
$> = new
end
str = "utf8日本語"
p str
puts str
print str, "\r\n"
printf("utf8日本語は%d文字\r\n", str.split(//u).length)

C:\rubyapi\utf8ntest>ir -v
IronRuby 1.1.0.0 on .NET 4.0.30319.1

C:\rubyapi\utf8ntest>ir utf8ntest.rb
"utf8\346\227\245\346\234\254\350\252\236"
utf8日本語
utf8日本語
utf8日本語は7文字

-Kuのオプションを付けるとpでも表示される。
C:\rubyapi\utf8ntest>ir -Ku utf8ntest.rb
"utf8日本語"
utf8日本語
utf8日本語
utf8日本語は7文字

printfの行を修正して、エラーを出すと
C:\rubyapi\utf8ntest>ir utf8ntest.rb
utf8ntest.rb:12: Invalid character 'a' in expression
printf(utf8a?\a?¬ea?a? ̄%da??a-?\r\n", str.split(//u).length)
^
C:\rubyapi\utf8ntest>ir -Ku utf8ntest.rb
utf8ntest.rb:12: syntax error, unexpected `\'
printf(utf8日本語は%d文字\r\n", str.split(//u).length)


0 件のコメント:

コメントを投稿