Ruby on Rails UTF8问题
当我运行我的代码时:
@a = People.order('created_at DESC').limit(1).pluck(:name)
它告诉我这个:
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB"
我读到这是UTF8问题。 为了解决这个问题我做了:
- 我的MySQL表是UTF8 utf8_general_ci
-
在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会配置错误。