Что случилось с символом £ - PullRequest
0 голосов
/ 09 марта 2010

Я немного запутался с символом '£' в Ruby.

В JRuby, если я сделаю:

puts '£40'

в файле .rb я запускаю это, я получаю

£40

В JRuby IRB я получаю:

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

Символ фунта выводится как \ 243.

В чистом Ruby IRB я даже не могу ввести символ £. Курсор переходит на три пробела влево, когда я нажимаю клавишу £!

пытается .toutf8 или toutf16 воспитывать даже более странных персонажей!

Что происходит! ??!? Почему я не могу просто вывести простое £?

Ответы [ 3 ]

1 голос
/ 10 марта 2010

Иногда это проблема с тем, как ваша консоль вставляет персонажа. Например, последовательность символов Юникода может содержать символ, который консоль использует для возврата на одну позицию, или стрелка влево. Вероятно, это проблема с консолью IRB, которая не получает вашего персонажа в порядке.

Для скрипта похоже, что JRuby делает то, что должен. Однако о проблеме с консолью, вероятно, следует сообщать как об ошибке, поскольку мы хотим, чтобы IRB поддерживал ввод символов Юникода. Перейдите к средству отслеживания ошибок JRuby на http://bugs.jruby.org и покажите простой сеанс или предоставьте шаги для воспроизведения (что должно быть легко).

0 голосов
/ 09 марта 2010

'\ 243' - восьмеричная escape-последовательность для '£'.

0 голосов
/ 09 марта 2010

Скорее всего, символ является символом Юникода, и вы конвертируете его (возможно, непреднамеренно). Если вы не можете ввести символ фунта стерлингов, убедитесь, что ваша консоль поддерживает Unicode.

Что вы получаете, когда делаете £.class? String? Unicode::String? Возможно, явное объявление символа как Unicode::String или Unicode::Character даст другие результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...