Очистка «умных» персонажей из Word в Ruby - PullRequest
0 голосов
/ 29 сентября 2010

Мне нужно очистить различные «умные» символы Word при вводе пользователем, включая, но не ограничиваясь, следующим:

– EN DASH
‘ LEFT SINGLE QUOTATION MARK
’ RIGHT SINGLE QUOTATION MARK

Существуют ли какие-либо функции или библиотеки Ruby для отображения их в ASCII (рядом-) эквиваленты, или мне действительно нужно просто сделать кучу ручных gsubs?

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Gem HTMLEntities будет декодировать объекты в UTF-8.

Вы можете использовать iconv для транслитерации до ближайших эквивалентов ASCII или простых вызовов gsub или tr.У Джеймса Грея есть блогов о конвертации между различными наборами символов, показывающих, как выполнять транслитерации.

require 'htmlentities'

chars = [
  '–', # EN DASH
  '‘', # LEFT SINGLE QUOTATION MARK
  '’'  # RIGHT SINGLE QUOTATION MARK
]

decoder = HTMLEntities.new('expanded')
chars.each do |c|
  puts "#{ c } => #{ decoder.decode(c) } => #{ decoder.decode(c).tr('–‘’', "-'")} => #{ decoder.decode(c).encoding }"
end

# >> – => – => - => UTF-8
# >> ‘ => ‘ => ' => UTF-8
# >> ’ => ’ => ' => UTF-8
0 голосов
/ 30 сентября 2010

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

...