問題の一部は、Ruby 1.8.7がマルチバイトサポートの開始点を持っていたことです。おそらくあなたのソースの$ KCODE値を定義する必要があります。 The $KCODE Variable and jcode Library
Ruby 1.9.2の方がはるかにサポートされているので、試してみてください。
Greg:~ greg$ irb -f
irb(main):001:0> RUBY_VERSION
=> "1.9.2"
irb(main):002:0> str = "调试程序"
=> "调试程序"
irb(main):003:0> str
=> "调试程序"
irb(main):004:0> str.each_char.to_a
=> ["调", "试", "程", "序"]
irb(main):005:0> str.each_byte.to_a
=> [232, 176, 131, 232, 175, 149, 231, 168, 139, 229, 186, 143]
irb(main):006:0> str.valid_encoding?
=> true
irb(main):007:0> str.codepoints
=> #<Enumerator: "调试程序":codepoints>
irb(main):008:0> str.each_codepoint.to_a
=> [35843, 35797, 31243, 24207]
irb(main):009:0> str.each_codepoint.to_a.map { |i| i.to_s(16) }
=> ["8c03", "8bd5", "7a0b", "5e8f"]
irb(main):010:0> str.encoding
=> #<Encoding:UTF-8>
irb(main):011:0>
そして、私はTextMateで次のことを実行する場合1.9.2は私のデフォルトとして設定されている間:
これは1.9.2とIRBいじりからである
# encoding: UTF-8
puts RUBY_VERSION
str = "调试程序"
puts str
出力する:
# >> 1.9.2
# >> 调试程序
ルビーデブ私はその問題が何であるかを調べる必要があるので、ug19は同じコードで怒って取得します。
Gregさんに非常に感謝します。私はこれまでKUの実行時間パラメータを設定しようとしましたが、デバッグの過程で常にバイナリデータが表示されます。私はデバッグの問題について妥協するつもりです。とにかくありがとう。 – ywenbo
デバッガはバイナリデータをエスケープされた値として表示する傾向があります。すべてのデータが特定のUnicodeコードセットに収まる場合、それは何らかの形式のテキストであると仮定することができますが、値が多くのコードセットからのものであれば、実際に文字列が実際にはテキストが含まれている場合や、何らかのバイナリデータを含む変数の場合デバッガの中には、文字列や構造体のような特定の型の変数にキャストすることができるものがあります。そのため、デバッガにどのように表示するかを教えることができますが、エスケープや16進表示を使用することはできません。 –
私はそれをして以来ずっと古くなってきましたが、NetBeansのデバッガはJavaデバッガでJava用に値を表示するときに値を強制することになります。 NetBeansとJavaは非常によく統合されています。私は彼らがまだRubyで同じことをしてきたとは思わない。 –