Lin*_*der 6 mysql ruby-on-rails utf8-decode
我有这种情况.
电影名称:
$ title = "La leyenda de Osaín"
Run Code Online (Sandbox Code Playgroud)
使用此编码:
$ title.encoding.name
>> UTF-8
Run Code Online (Sandbox Code Playgroud)
然后我将其保存到数据库中.
$ movie = Movie.create!(:title => title)
Run Code Online (Sandbox Code Playgroud)
然后我试着看电影.
$ Movie.find(movie.id).title.encoding.name
>> "ASCII-8BIT"
$ Movie.find(movie.id).title
>> "La leyenda de Osa\xC3\xADn"
Run Code Online (Sandbox Code Playgroud)
所有其他电影的作品不包含像í和的特殊字符û.
这是我的database.yaml文件:
development:
adapter: mysql
database: development
username: linus
password: my_password
socket: /tmp/mysql.sock
encoding: UTF8
Run Code Online (Sandbox Code Playgroud)
我在使用时获得了正确的数据forced_encoding.
$ Movie.find(movie.id).title.force_encoding("UTF-8")
>> "La leyenda de Osaín"
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 3.0.5.rc1和MySQL 14.14.
谁知道问题可能是什么?
我找到了解决问题的方法.现在我正在使用更新的mysql2宝石.
我在Gemfile里面替换gem "mysql"了gem "mysql2".
然后我更改了database.yaml文件中的数据库适配器.
从:
development:
adapter: mysql
database: development
username: linus
password: my_password
socket: /tmp/mysql.sock
encoding: UTF8
Run Code Online (Sandbox Code Playgroud)
至:
development:
adapter: mysql2
database: development
username: linus
password: my_password
socket: /tmp/mysql.sock
encoding: UTF8
Run Code Online (Sandbox Code Playgroud)
我认为这是我案中的交易破坏者:
[...]它还强制使用UTF-8 [或二进制]进行连接[以及1.9 [...]中的所有字符串
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |