Ruby on rails 不兼容的字符编码:Ruby 1.9中的ASCII-8BIT和UTF-8
我的Ruby 1.9和Rails 2.3.4出现以下错误。当用户提交非ASCII标准字符时会发生这种情况 我阅读了很多在线资源,但似乎没有一个解决方案有效 我试着使用(正如一些资源所建议的) 但这没用Ruby on rails 不兼容的字符编码:Ruby 1.9中的ASCII-8BIT和UTF-8,ruby-on-rails,ruby-1.9,Ruby On Rails,Ruby 1.9,我的Ruby 1.9和Rails 2.3.4出现以下错误。当用户提交非ASCII标准字符时会发生这种情况 我阅读了很多在线资源,但似乎没有一个解决方案有效 我试着使用(正如一些资源所建议的) 但这没用 有没有办法解决这个问题?是否有办法在保存到数据库之前消除这些字符?或者,有没有办法让它们显示出来?我对Ruby(或Rails)了解不多,但我想问题是由于对角色编码缺乏控制造成的 首先,您应该决定存储在数据库中的编码。然后,您需要确保在存储到数据库之前将所有文本转换为该编码。为了做到这一点,您首先需
有没有办法解决这个问题?是否有办法在保存到数据库之前消除这些字符?或者,有没有办法让它们显示出来?我对Ruby(或Rails)了解不多,但我想问题是由于对角色编码缺乏控制造成的 首先,您应该决定存储在数据库中的编码。然后,您需要确保在存储到数据库之前将所有文本转换为该编码。为了做到这一点,您首先需要知道从哪个编码开始 一条经常重复的建议是,在控制输入后,尽快将所有输入从它使用的任何编码解码为unicode(如果您的语言支持)。然后您就知道程序中处理的所有文本都是unicode。在另一端,将文本编码为您想要的任何输出编码,作为输出之前的最后一步
关键是要始终知道在代码的任何给定位置使用的文本编码。对于ruby 1.9和Rails 3.0.x,请使用mysql2适配器 在您的文件中:
gem 'mysql2', '~> 0.2.7'
并将database.yml更新为:
adapter: mysql2
耶胡达·卡茨(Yehuda Katz)的博客上有一篇关于它的好文章:我已经为此奋斗了一段时间。mysql2gem不起作用,也没有任何其他建议的解决方案。对于其他可能偶然发现这一点的搜索者:如果您在mysql中使用blob或其他数据类型,请将其更改为字符串或文本。它保持了编码,不再让人头疼。谢谢,这对我来说非常有效。但请注意,mysql2v0.3.*会在Rails3.0.7中抛出错误。我在使用
rack webconsole
时遇到了不兼容的字符编码:ASCII-8BIT和UTF-8
——然后我找到了这篇文章。谢谢,@Jhony-Fung!
adapter: mysql2