Как заменить гем Unicode на Ruby 1.9? - PullRequest
5 голосов
/ 24 августа 2009

К сожалению, Unicode 0.1 (sudo gem install unicode) не работает на Ruby 1.9. У меня есть следующий фрагмент:

require "rubygems"
require "unicode"

str = "áéíóúç"
Unicode.normalize_KD(str).gsub(/[^\x00-\x7F]/n, "")
#=> aeiouc

Я использую его для преобразования заголовков в постоянную ссылку без удаления символов с акцентом.

Есть ли способ конвертировать такие тексты, используя pack или unpack методы?

Ответы [ 2 ]

13 голосов
/ 24 августа 2009

Обновление: лучшим вариантом может быть использование гема unicode_utils, который был создан специально для этих отсутствующих функций:

require "unicode_utils"
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"

Есть ли вероятность, что вы можете зависеть от ActiveSupport от Rails? Тогда вы можете сделать следующее:

require "activesupport"
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç")
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"

ActiveSupport::Multibyte был написан для обеспечения поддержки UTF-8 / Unicode в Ruby 1.8, но прекрасно работает и в 1.9. Вы можете позаимствовать часть кода , если не хотите использовать его как внешнюю зависимость.

1 голос
/ 17 сентября 2013

В Rails также есть метод I18n.transliterate('string'). Работает как шарм.

...