Изменить символы Юникода в UTF-8 с символа на цифровой код - PullRequest
0 голосов
/ 27 ноября 2011

Я использую Ruby (и Nokogiri в случае, если это полезно) для кодирования некоторых документов. Я хочу изменить фактические символы Юникода (например, ) на HTML-объекты (например, “). Как мне это сделать? Я знаю, что могу сделать один персонаж с чем-то вроде

s = '“'    
puts "&##{.unpack('U').first};"   # gives “

но есть ли способ сделать это правильно, используя iconv или nokogiri?

Ответы [ 3 ]

1 голос
/ 27 ноября 2011

Существует гем HTMLEntities . Для десятичной кодировки он примерно такой же, как ваш код (распаковать).

1 голос
/ 28 ноября 2011

Это может быть неправильно, но nokogiri делает это (я думаю, libxml2), когда не понимает кодировку:

Nokogiri::HTML(html,nil,'klingon')
0 голосов
/ 27 ноября 2011

Я придумал этот метод, который использует довольно грубый подход, который наверняка (надеюсь?) Заменен решением скомпилированной библиотеки? Это работает, хотя:

def clean(text)
  # Convert html chars to entities.
  text = text.gsub(/[^\u{20}-\u{7E}]/){|char| "&##{char.unpack('U')[0]};"}
end
...