7

我的 Ruby 1.9 和 Rails 2.3.4 出现以下错误。当用户提交非 ASCII 标准字符时会发生这种情况。

我阅读了很多在线资源,但似乎没有一个有效的解决方案。

我尝试使用(正如一些资源所建议的那样)

string.force_encoding('utf-8') 

但这没有帮助。

任何想法如何解决这个问题?有没有办法在保存到数据库之前消除这些字符?或者,有没有办法让他们展示?

4

2 回答 2

11

对于 ruby​​ 1.9 和 Rails 3.0.x,使用 mysql2 适配器。

在您的 gemfile 中:

gem 'mysql2', '~> 0.2.7'

并将您的 database.yml 更新为:

adapter: mysql2

http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/

于 2011-06-02T04:15:27.660 回答
1

我对Ruby(或Rails)了解不多,但我认为问题是由于对字符编码缺乏控制造成的。

首先,您应该决定将哪种编码存储在数据库中。然后,您需要确保在存储到数据库之前将所有文本转换为该编码。为了做到这一点,您首先需要知道它是从哪种编码开始的。

一个经常重复的建议是在您控制它后尽快将所有输入从它使用的任何编码解码为 un​​icode(如果您的语言支持它)。然后您知道您在程序中处理的所有文本都是 unicode。另一方面,将文本编码为您想要的任何输出编码,作为输出之前的最后一步。

关键是始终知道在代码中的任何给定位置一段文本正在使用哪种编码。

于 2009-11-22T20:02:52.893 回答