Pergunta

Infelizmente, o Unicode 0.1 (sudo gem install unicode) não funciona no Ruby 1.9. Eu tenho o seguinte trecho:

require "rubygems"
require "unicode"

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

Eu usá-lo para converter títulos de permalink, sem remover os caracteres acentuados.

Existe uma maneira de converter tais textos usando métodos pack ou unpack?

Foi útil?

Solução

Update: uma opção melhor pode ser usar a gema unicode_utils que foi criado especificamente para estas características ausentes:

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

Existe a possibilidade de você pode depender de ActiveSupport do Rails? Então você pode fazer o seguinte:

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

ActiveSupport::Multibyte foi escrito para trazer suporte UTF-8 / Unicode para Ruby 1.8, mas funciona bem em 1,9 também. Você pode ser capaz de emprestar alguns dos o código se você não quer que ele como dependência externa.

Outras dicas

Há também método I18n.transliterate('string') em Rails. Funciona como um encanto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top