Ruby on Rails 3,不兼容的字符编码:UTF-8 和 ASCII-8BIT 与 i18n

问题描述:

我在 Rails 3.0.1、Ruby 1.9.2 和我的网站本地化方面遇到了一些麻烦.

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')

和一个 es.yml 文件:

and a es.yml file :

es:
  labels:
    zip_code: "Este código postal no es valido."

en.yml 文件(它是纯 ASCII)没有问题,但是当网站设置为 i18n.locale == 'es' 时,我收到此错误:

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

我已经找了很长时间,但没有找到使用我的 UTF-8 翻译文件的方法.

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 ?

感谢您的帮助.

好的,经过几个小时的谷歌搜索后问题解决了...

Ok so problem solved after some hours of googling...

我的代码中实际上有两个错误.第一个是文件编码错误,第二个是 MySQL 数据库配置问题.

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.

首先解决mysql导致的错误我用了这两篇文章:

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/

其次,为了解决文件编码问题,我在 config/environment.rb 中添加了这两行

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 :)