views:

898

answers:

1

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?

+3  A: 

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.

molf
Nice replacement! I use Unicode gem on a Rails plugin, so sure I can rely on it! Thanks a lot! Would be nice to have a replacement using Ruby 1.9 only though, because there are a lot of gems that use it and ActiveSupport may not be a choice for all of them.
Nando Vieira
That's the one I was thinking about in my comment above. Thanks for reminding me about that! I'm actually going to need that right now in my toy project.
Jörg W Mittag
I think is better to use the unicode-utils gem instead of ActiveSupport when replacing unicode on gems! Thanks! ;)
Nando Vieira