适当地在我的Rails应用程序中处理非UTF8内容

时间:2009-02-04 18:57:40

标签: ruby-on-rails ruby utf-8 character-encoding

我有一个Rails应用程序,允许用户使用RSS提要等从各种来源导入信息。我在数据库上的默认编码是UTF8,我收到了很多关于非UTF8数据的异常,这些数据来自系统,一旦到达数据库就会崩溃。

我要使用is_utf8正确检测非UTF8数据?在保存完成之前对属性的方法,但我还没有想出办法来处理它。我已经看过要转换的iconv,但似乎需要能够确定我要转换的编码类型。

是否有一种简单的方法可以进行猜测转换,或者可能只是删除非UTF8字符,然后将保存到数据库中?

谢谢!

2 个答案:

答案 0 :(得分:1)

对于切换编码,Iconv是你的朋友。为了检测编码,有一个小宝石可用:rchardet我们用它来检测亚洲编码以试图阻止垃圾邮件并且它运行正常。

答案 1 :(得分:1)

非UTF-8数据如何进入系统?确保所有页面都作为Content-Type text / html; charset = utf-8提供,浏览器将始终向表单提交UTF-8数据。

(当然,这仍然会留下诸如邮件和上传文件之类的东西,但是很多这类特定的上下文通常会给你一个编码继续。)