jirbで日本語を扱うには、jirb_swing -Kuとする
jirbに直接日本語を入力しようとすると、文字化けしてしまいます。
C:\>jirb irb(main):001:0> '???{??' => "\302\223\303\272\302\226{\302\214\303\252" irb(main):002:0> java.lang.String.new('???{??').to_s => "\302\223\303\272\302\226{\302\214\303\252"
--noreadline オプションを付けて行編集機能を無効にすると、日本語が入力できるようになりますが、評価結果が文字化けしてしまいます。
C:\>jirb --noreadline irb(main):001:0> '日本語' => "\223\372\226{\214\352" irb(main):002:0> java.lang.String.new('日本語').to_s => "\357\277\275\357\277\275{\357\277\275\357\277\275"
-K オプションでSJISを宣言すると、文字列の評価結果は文字化けしませんが、JavaのStringクラスに渡した結果は文字化けしてしまいます。Javaに値を渡す際に、SJISからUnicodeへのコード変換は行っていないようです。
C:\>jirb -Ks --noreadline irb(main):001:0> '日本語' => "日本語" irb(main):002:0> java.lang.String.new('日本語').to_s => "・\275・\275{・\275・\275"
WindowsのコマンドプロンプトではSJISを使っているので、当然ながら -K オプションでUTF-8を宣言すると、文字化けしてしまします。
C:\>jirb -Ku --noreadline irb(main):001:0> '日本語' => "\223?{語" irb(main):002:0> java.lang.String.new('日本語').to_s => "・ス・ス{・ス・ス"
Windowsのコマンドプロンプトでchcp 65001を実行すると、UTF-8が使えるらしいのですが、なぜか僕の環境ではjirbを実行できませんでした。
Windowsのコマンドプロンプトをあきらめ、jirb_swingを使えば、文字化けが無くなります。
C:\>jirb_swing -Ku
irb(main):001:0> '日本語' => "日本語" irb(main):002:0> java.lang.String.new('日本語').to_s => "日本語"