Unfortunately, the Unicode 0.1 (sudo gem install unicode
) doesn't work on Ruby 1.9. I have the following snippet:
require "rubygems"
require "unicode"
str = "áéíóúç"
Unicode.normalize_KD(str).gsub(/[^\x00-\x7F]/n, "")
#=> aeiouc
I use it to convert titles to permalink, without removing accented characters.
Is there a way of converting such texts using pack
or unpack
methods?
Update: a better option may be to use the gem unicode_utils
that was created specifically for these missing features:
require "unicode_utils"
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"
Is there a possibility you can depend on Rails' ActiveSupport? Then you can do the following:
require "activesupport"
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç")
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"
ActiveSupport::Multibyte
was written to bring UTF-8/Unicode support to Ruby 1.8, but works fine in 1.9 too. You may be able to borrow some of the code if you don't want it as an external dependency.
There is also I18n.transliterate('string')
method in Rails. Works like a charm.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With