Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 不兼容的字符编码:Ruby 1.9中的ASCII-8BIT和UTF-8_Ruby On Rails_Ruby 1.9 - Fatal编程技术网

Ruby on rails 不兼容的字符编码:Ruby 1.9中的ASCII-8BIT和UTF-8

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 1.9和Rails 2.3.4出现以下错误。当用户提交非ASCII标准字符时会发生这种情况

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

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

但这没用


有没有办法解决这个问题?是否有办法在保存到数据库之前消除这些字符?或者,有没有办法让它们显示出来?

我对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