我的Ruby1.9& Rails 2.3.4出现以下错误。当用户提交非ASCII标准字符时,会发生这种情况。
我读了很多在线资源,但似乎没有一个有效的解决方案。
我尝试使用(正如一些参考资料所建议的)
string.force_encoding('utf-8') 但这并不管用。
有什么办法解决这个问题吗?有没有办法在保存到数据库之前消除这些字符?或者,有没有办法让他们表现出来?
发布于 2009-11-23 04:02:53
我对Ruby (或Rails)了解不多,但我想这个问题是由于缺乏对字符编码的控制造成的。
首先,您应该决定将哪种编码存储在数据库中。然后,您需要确保在将所有文本存储到数据库之前将所有文本转换为该编码。为了做到这一点,您首先需要知道从哪种编码开始。
一个经常重复的建议是,在您控制unicode之后,尽快将所有输入解码为unicode(如果您的语言支持unicode)。然后您就知道您在程序中处理的所有文本都是unicode。在另一端,将文本编码为您想要的任何输出-编码是输出文本之前的最后一步。
关键是要始终知道在代码中的任何给定位置使用了哪种编码。
发布于 2011-06-02 12:15:28
对于Ruby1.9和Rails 3.0.x,使用mysql2适配器。
在您的gemfile中:
gem 'mysql2', '~> 0.2.7'并将您的database.yml更新为:
adapter: mysql2https://stackoverflow.com/questions/1779740
复制相似问题