2010-03-08 88 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'是'£'的八進制轉義序列。