怎么了£符号

时间:2010-03-08 23:37:54

标签: ruby

我对Ruby中的'£'符号感到困惑。

如果我这样做在JRuby:

puts '£40'

在.rb文件中我运行了这个,我得到了

£40

在JRuby IRB中,我得到:

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

英镑符号输出为\ 243。

在纯Ruby IRB中,我甚至无法输入£符号..当我按下£键时,光标跳到左侧三个空格!

尝试.toutf8或toutf16会带来更奇怪的角色!

怎么回事!??!?为什么我只能输出一个简单的£?

3 个答案:

答案 0 :(得分:1)

有时,这是控制台粘贴角色的方式的问题。例如,unicode字符序列可以包括控制台用于执行退格或向左箭头的字符。这可能是IRB控制台无法接收您的角色的问题。

对于脚本来说,看起来JRuby正在做它应该做的事情。但是,控制台的问题可能会被报告为错误,因为我们确实希望IRB支持输入unicode字符。在http://bugs.jruby.org跳转到JRuby的bug追踪器,并提供一个简单的会话或提供重现的步骤(这应该很容易)。

答案 1 :(得分:0)

很可能,符号是Unicode符号,您正在转换它(可能是无意中)。如果您无法输入英镑符号,请确保您的控制台支持Unicode。

£.class时你会得到什么? StringUnicode::String?也许明确地将该字符声明为Unicode::StringUnicode::Character会产生不同的结果。

答案 2 :(得分:0)

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