Forum: Ruby on Rails Removing string's accents

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bob M. (Guest)
on 2008-12-08 13:53
Hi, I'm pretty sure to have seen a new method 'remove_accents' in Rails
2.2 but I can't find it again. Is it me or does this method exists for
good ?

Thanks
Chris G. (Guest)
on 2009-02-20 11:32
Hi Bob,

I don't know about such a method, but I hope it exists. In the mean
time, I've tried one I found on this same forum (in French:
http://www.ruby-forum.com/topic/144612#784212). Unfortunately, it
doesn't work when I run my application, but it works in irb! I suspect
it's got to do with encoding...

  def ApplicationHelper.remove_accents( str )

    accents = { ['á','à','â','ä','ã','Ã','Ä','Â','À'] => 'a',
                ['é','è','ê','ë','Ë','É','È','Ê'] => 'e',
                ['í','ì','î','ï','I','Î','Ì'] => 'i',
                ['ó','ò','ô','ö','õ','Õ','Ö','Ô','Ò'] => 'o',
                ['Å“'] => 'oe',
                ['ß'] => 'ss',
                ['ú','ù','û','ü','U','Û','Ù'] => 'u'
    }
    accents.each do |ac,rep|
      ac.each do |s|
        str.gsub!(s, rep)
      end
    end
    return str
  end

I tried setting $KCODE="UTF-8" or $KCODE="ISO-8859-1" at the top of my
source code, as suggested by cwilliams (creator of RadRails:
http://forums.aptana.com/viewtopic.php?f=20&t=8234), but that doesn't
solve my problem. If you get this working in a real application, please
let me know; I'm getting desparate!

Thanks,

Chris.
Chris G. (Guest)
on 2009-02-20 12:24
Here's another solution:

http://www.techniconseils.ca/en/scripts-remove-acc...

Unfortunately, I still have the same encoding problems, but hopefully
it'll work for you. And don't hesitate to get back to me if you think
you know what I'm doing wrong :)

Good luck,

Chris.
Sazima (Guest)
on 2009-02-20 17:01
(Received via mailing list)
Bob,

Rails doesn't have a specific method to remove diacritics. There are a
couple alternatives - I used the 1st one and it works really great:

    + http://snippets.dzone.com/posts/show/5609
    + http://github.com/thbar/diacritics_fu/tree/master
    + http://www.jroller.com/obie/tags/ruby
    + http://www.techniconseils.ca/en/scripts-remove-acc...

Cheers, Sazima

On Feb 20, 7:24 am, Chris Gers32 <removed_email_address@domain.invalid>
Chris G. (Guest)
on 2009-02-20 17:40
> I used the 1st one and it works really great:
>
>     + http://snippets.dzone.com/posts/show/5609

I tried that, but I get the following error message:

NameError: uninitialized constant ActiveSupport::Multibyte::Handlers

I have Ruby 1.8.6 and Rails 2.2.2.

Thanks,

Chris.
This topic is locked and can not be replied to.