Rails序列化给出了错误的字符

时间:2012-12-17 09:23:09

标签: ruby-on-rails postgresql encoding character-encoding

我有一个类,其中一个字段使用序列化但发现我的一些文本在输入普通文本后会出现奇怪的字符。这是编码的东西吗?我该如何解决这个问题?

我使用Heroku和他们的postgresql数据库。在SQLite中执行它时,它就像一个魅力。

SQlite的:

Ik zeg wat ik voel.

 Doe ik ...

Postgres的:

Ik zeg wat ik voel.â¨â¨ Doe ik ...

谢谢!

2 个答案:

答案 0 :(得分:1)

首先检查你的postgresql和你的系统编码其UTF-8(最安全的),同时检查 config / database.yml 你是否为postgres连接设置了UTF-8编码

如果这不能解决问题,请将yaml引擎更改为syck,在文件 config / boot.rb 上写

require 'yaml'
YAML::ENGINE.yamler = 'syck' 

应修复奇怪的角色。

答案 1 :(得分:0)

在postgres中,您正在解释ISO-8859-1中的UTF-8字节。鉴于在您的帖子中,有2x U+2028 line separators,其UTF-8表示为0xE2 0x80 0xA8,在ISO-8859-1中解释时显示为â¨,{{1中间是不可传送到你帖子的隐形控制字符。

所以问题是你正在查看结果的是什么,获得UTF-8的正确字节,但将它们解释为ISO-8859-1。