Ruby on Rails UTF8问题

当我运行我的代码时:

@a = People.order('created_at DESC').limit(1).pluck(:name) 

它告诉我这个:

 "\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB" 

我读到这是UTF8问题。 为了解决这个问题我做了:

  1. 我的MySQL表是UTF8 utf8_general_ci
  2. 在application.rb中我粘贴:

     class Application < Rails::Application config.encoding = "utf-8" 

但所有这些步骤都没有帮助我。 在MySQL表中所有看起来都正确,这个问题只是俄语字母。

任何想法如何解决这个问题?

"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB"是ASCII-8BIT字符串编码。

可能是您的控制台尝试显示此文本的问题。 Rails仍然可以在视图中正确呈现它。 如果没有,您可以使用.force_encoding("UTF-8")将其转换为utf-8:

 "\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB".force_encoding("UTF-8") # => "Касл" 

实际上,字符串值似乎是正确的,如果你解码它将有"Касл" 。 因此,我相信一旦将其输出到HTML视图中它应该可以正常工作。

与此同时,您的控制台可能出现问题。 尝试在控制台中运行puts __ENCODING__ ,如果它没有返回UTF-8那么IRB会配置错误。