我有一个 Rails 应用程序,它允许用户使用 RSS 提要等从各种来源导入信息。我在数据库上的默认编码是 UTF8,我收到了很多关于非 UTF8 数据的异常,这些数据来自系统并在到达数据库后崩溃。
我要使用 is_utf8 适当地检测非 UTF8 数据?在保存完成之前属性上的方法,但我还没有想出一种方法来处理它。我已经看到 iconv 进行转换,但似乎需要能够确定我正在转换的编码类型。
有没有一种简单的方法来进行猜测转换,或者可能只是去掉非 UTF8 字符,然后保存到数据库中?
谢谢!
我有一个 Rails 应用程序,它允许用户使用 RSS 提要等从各种来源导入信息。我在数据库上的默认编码是 UTF8,我收到了很多关于非 UTF8 数据的异常,这些数据来自系统并在到达数据库后崩溃。
我要使用 is_utf8 适当地检测非 UTF8 数据?在保存完成之前属性上的方法,但我还没有想出一种方法来处理它。我已经看到 iconv 进行转换,但似乎需要能够确定我正在转换的编码类型。
有没有一种简单的方法来进行猜测转换,或者可能只是去掉非 UTF8 字符,然后保存到数据库中?
谢谢!
在切换编码方面,Iconv 是您的朋友。要检测编码,有一个可用的小宝石:rchardet 我们用它来检测亚洲编码以阻止垃圾邮件,它工作得很好。
非 UTF-8 数据如何进入系统?确保您的所有页面都作为 Content-Type text/html;charset=utf-8 提供,并且浏览器将始终将 UTF-8 数据提交到您的表单。
(当然,仍然会留下邮件和上传文件等内容,但许多此类特定上下文通常会为您提供继续编码。)