2010-03-08 58 views
0

我有点困惑与Ruby中的'£'符号。怎么了£符号

在JRuby的,如果我做的:

puts '£40' 

在.RB文件我跑,我得到

£40 

在JRuby的IRB我得到:

>> pung = 'h40' 
=> "h40" 
>> pung.gsub!('h', '£') 
pung.gsub!('h', '£') 
=> "\24340" 

英镑符号输出为\ 243。

在纯Ruby Ruby IRB中,我甚至不能输入£符号。当我点击£键时,光标跳到左边的三个空格处!

尝试.toutf8或toutf16带出甚至陌生的人物!

发生了什么!?!?为什么我不能输出一个简单的£?

+4

Unicode是一个善变的女主人。 – 2010-03-08 23:39:39

回答

1

有时候,这是控制台粘贴角色的问题。例如,unicode字符序列可能包含控制台用于执行退格或左箭头的字符。这可能是IRB控制台没有收到你的角色的问题。

对于脚本,它看起来像JRuby正在做它应该做的。因为我们希望IRB支持输入unicode字符,所以控制台的问题可能会被报告为一个错误。在http://bugs.jruby.org上弹出到JRuby的bug跟踪器,并提供一个简单的会话或提供重现步骤(应该很简单)。

+0

控制台问题与普通的Ruby不同,不是JRuby。 JRuby确实合作得更好!我无法使用JRuby解决这个问题,就是这个额外的特性。这不会显示JRuby IRB ..但是,如果我通过Netbeans中的JRuby运行.rb文件。令人费解的... – 2010-03-10 13:11:16

0

最有可能的是,该符号是一个Unicode符号,并且您正在转换它(可能是无意)。如果您无法输入英镑符号,请确保您的控制台支持Unicode。

当你做什么£.classStringUnicode::String?也许明确声明字符为Unicode::StringUnicode::Character将给出不同的结果。

+0

如果我做£.class,我得到:'\ 243Invalid char'\ 243'('¬£')在表达式(SyntaxError)'..如果我做'£'.class我得到字符串。也许一个愚蠢的问题..我如何声明为Unicode:字符串? – 2010-03-08 23:58:55

+0

确保你首先需要'unicode',然后做'£'.to_u'。有关更多详细信息,请参阅http://ruby-unicode.rubyforge.org/doc/。如果您的终端不让您直接输入Unicode字符,请尝试使用“\ 243”.to_u'。 – bta 2010-03-09 22:18:12

0

'\ 243'是'£'的八进制转义序列。