Ruby on Rails 3, incompatible character encodings: UTF-8 and ASCII-8BIT with i18n
Solution 1
Ok so problem solved after some hours of googling...
There was actually two bugs in my code. The first one was a file encoding error and the second was the problem with the MySQL Data base configuration.
First, to solve the error caused by MySQL I used this two articles :
http://www.dotkam.com/2008/09/14/configure-rails-and-mysql-to-support-utf-8/
http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/
Second, to solve the file encoding problem I added these 2 lines in my config/environment.rb
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
Hopefully this will help someone :)
Solution 2
I solved most of the problems by combining many solutions:
- Make sure
application.rb
has this line:config.encoding = "utf-8"
. - Make sure you are using 'mysql2' gem
- Putting
# encoding: utf-8
at the top of any file containing utf-8 characters. -
Add the following two lines above the
<App Name>::Application.initialize!
line inenvironment.rb
:Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8
http://rorguide.blogspot.com/2011/06/incompatible-character-encodings-ascii.html
Nicolas Guillaume
If you want to know more about me, please visit my linkedin profile.
Updated on February 27, 2020Comments
-
Nicolas Guillaume about 4 years
I've got some troubles with the couple Rails 3.0.1, Ruby 1.9.2 and my website localization.
The problem is quite simple, i've got something like that in a view :
f.input :zip_code, :label => I18n.t('labels.zip_code')
and a es.yml file :
es: labels: zip_code: "Este código postal no es valido."
There are no troubles with the en.yml file (it's pure ASCII) but when the website is set with
i18n.locale == 'es'
I get this error :incompatible character encodings: UTF-8 and ASCII-8BIT
I have been looking around for quite a while but didn't found a way to use my UTF-8 translation files.
Did some knows how to make it works ?
Thanks for your help.