使用Netbeans,为什么Ruby调试不能正确显示多字节字符串?

env是:netbeans(v = 6.9.1),ruby-debug-base(v = 0.10.4),ruby-debug-ide(0.4.16),ruby(v = 1.8.7)

在对Ruby脚本进行调试的过程中,debuger无法正确显示多字节,并且在变量窗口视图中始终显示多字节字符串的“二进制数据”:

require 'rubygems' require 'active_support' str = "调试程序" str = str.mb_chars puts "length: #{str.length}" 

顺便说一下,我尝试了0.4.16,0.4.11 for ruby​​-debug-ide,但它们具有相同的输出。

有人能告诉我如何使它在调试变量窗口视图中正确显示多字节字符串吗?

部分问题是Ruby 1.8.7开始支持多字节。 您可能需要为源定义$ KCODE值。 请参阅$ KCODE变量和jcode库

Ruby 1.9.2对它有更好的支持,所以如果这是一个选项,请尝试一下。


这是来自于1.9.2和irb:

 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 => # 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 => # irb(main):011:0> 

并且,如果我在Textmate中运行以下内容,而1.9.2被设置为我的默认值:

 # encoding: UTF-8 puts RUBY_VERSION str = "调试程序" puts str 

哪个输出:

 # >> 1.9.2 # >> 调试程序 

Ruby Debug19对相同的代码感到生气,因此我需要研究它的问题所在。