当我运行我的代码时:
@a = People.order('created_at DESC').limit(1).pluck(:name)
它让我回答:
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB"
我读到了它的UTF8问题。为了解决这个问题,我做了:
在application.rb中我粘贴:
class Application < Rails::Application
config.encoding = "utf-8"
但所有这些步骤对我没有帮助。在MySQL表中所有看起来都正确,这个问题只是俄文字母。
任何想法如何解决这个问题?
答案 0 :(得分:1)
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB"
是ASCII-8BIT字符串编码。
可能是您的控制台尝试显示此文本的问题。 Rails仍然可以在视图中正确呈现它。如果没有,您可以使用.force_encoding("UTF-8")
:
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB".force_encoding("UTF-8")
# => "Касл"
答案 1 :(得分:0)
实际上,字符串值似乎是正确的,如果你解码它会有"Касл"
。因此,我相信一旦将其输出到HTML视图中它就能正常工作。
与此同时,您的控制台可能出现问题。尝试在控制台中运行puts __ENCODING__
,如果它没有返回UTF-8
,那么IRB会错误配置某些内容。