【发布时间】:2011-08-02 21:01:36
【问题描述】:
在我公司的 Rails 网站上,我们有一个 Twitter 区域,其中来自我们社交媒体团队的推文通过 rake 任务显示。基本上,rake 任务使用 Twitter gem 定期将任何新推文导入数据库,并从那里显示它们。使用 auto_link 帮助器将推文中的 URL 链接转换为 HTML 链接。
一直运行良好,直到现在。突然之间,链接被破坏,甚至错误地突出显示 URL 链接之前的单词。因此,在一条应如下所示的示例推文中:“请注意圣路易斯。高温警告延长至八月 http://bit.ly/...”,八月一词已链接,随后的 URL 本身已损坏,好像有在最后一个词和链接中断之间的东西......
调查了助手,在数据库中查找推文的文本字段以查看是否有任何奇怪的地方,甚至使用 rails 控制台手动拉出推文,但一切看起来都很好。直到我一直深入到推文正文的十六进制代码中,我才看到......
Please be safe S
t. Louis. Heat w
arning extended
through August.
 http://bit.ly/
r5fXlz #heatpoca
lypse
所以罪魁祸首是 ¬† 被扔进了空间,当我删除罪魁祸首空间并在数据库中手动读取它时,问题就解决了。
唯一的问题是,我不明白为什么要这样导入推文正文,尤其是当它通过 Rails 控制台看起来不错时。由于这是一个较旧的数据库,我注意到它在某些区域仍然使用 latin1 编码,而在其他区域使用 utf8,我确信将所有这些转换为 UTF-8 可以解决它,但它没有。
我什至在被导入之前尝试在身体上使用卫生助手,但这也没有用。
还尝试使用 ruby gsub 去除 ¬†,但没有成功。
有没有人知道如何解决这个奇怪的问题?
【问题讨论】:
-
问题可能出在您的 ruby 代码中。它使用 UTF-8 字符串吗?看看一些这样的编码文档:yehudakatz.com/2010/05/17/encodings-unabridged
-
您使用的是 ruby 1.8 还是 1.9?
-
使用 Ruby 企业版 1.8.7。到目前为止,了解 1.9 具有一些 1.8 没有的属性。
标签: ruby-on-rails ruby encoding utf-8 latin1