Проблема с сущностью Ruby HTML

Новичок в Ruby, и мне интересно, как заставить следующее печатать только символ степени...

require 'htmlentities'
coder = HTMLEntities.new
puts coder.decode('°')

В настоящее время вывод командной строки (Windows): °

Спасибо!


person Rob    schedule 18.04.2011    source источник


Ответы (1)


Похоже, что HTMLEntities.decode возвращает строку в UTF-8, и ваша консоль задыхается от этой кодировки. Вам придется перекодировать строку, прежде чем передавать ее в puts.

Если вы используете Ruby 1.9.2, код выглядит довольно простым (на основе Строка и документация по Кодировка ):

puts coder.decode('&deg;').encode(Encoding.find('<Whatever-Windows-Uses>'))

Возможно, вам придется попробовать несколько разных кодировок, прежде чем вы найдете что-то, что сможет понять ваша консоль.

Если вы используете более старую версию Ruby, похоже, что перекодирование можно выполнить через Iconv (см. этот вопрос - я подозреваю, что вы просто идете в противоположном направлении).

Надеюсь это поможет!

person Xavier Holt    schedule 18.04.2011