Mysql RubyonRails UTF8问题
当我运行代码时:Mysql RubyonRails UTF8问题,mysql,ruby-on-rails,ruby,utf-8,Mysql,Ruby On Rails,Ruby,Utf 8,当我运行代码时: @a = People.order('created_at DESC').limit(1).pluck(:name) 它返回给我这个: "\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB" 我读到这是UTF8问题。为了解决这个问题,我做了: 我的MySQL表在UTF8 UTF8\u general\u ci中 在application.rb I粘贴中: class Application < Rails::Application config.
@a = People.order('created_at DESC').limit(1).pluck(:name)
它返回给我这个:
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB"
我读到这是UTF8问题。为了解决这个问题,我做了:
class Application < Rails::Application
config.encoding = "utf-8"
类应用程序
有什么办法解决这个问题吗?实际上,字符串值似乎是正确的,如果你解码它,就会出现
“kkааС”
。因此,我相信,一旦您将其输出到HTML视图中,它就会很好地工作
同时,您的主机可能有问题。尝试在控制台中运行puts\uuuu ENCODING\uuuu
,如果它没有返回UTF-8
,则说明IRB配置错误。“\xD0\xD1\x81\xD0\xBB”
是ASCII-8BIT字符串编码
这可能是您的控制台试图显示此文本的问题。Rails仍然可以在视图中正确渲染它。如果没有,可以使用将其转换为utf-8。强制编码(“utf-8”)
:
试图在视图中呈现这些字符串而不是在控制台中看到它吗?它返回了我
UTF-8
。所以,它应该可以正常工作,但是我得到了这些符号检查你在浏览器中看到的,如果你看到了正确的西里尔字母,那么这意味着Rails和MySQL配置正确。问题只出现在控制台上,在这种情况下,这可能是因为ruby的编译不正确。我在浏览器和控制台中得到了这些符号,但在控制台中我也得到了我的编码是UTF-8,您的页面编码设置为UTF-8吗?浏览器是否设置为UTF-8?是。force\u编码
对我来说很有效,但是我可以设置它在不进行强制转换的情况下返回正确的符号吗?我把它设置为a.force\u编码(“UTF-8”)
并且它返回了[“\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB”]:数组`trya.first.force\u编码(“UTF-8”)的未定义方法
force\u编码(“UTF-8”)
是String
类的一种方法。您正在数组中调用它。尝试a[0]。强制编码(“UTF-8”)
或a。首先。强制编码(“UTF-8”)
是的,它正在工作!但我可以改进它吗?它将返回正确的输出,而无需强制编码?您能告诉我们如何将这些字符串保存到数据库中吗?
"\xD0\x9A\xD0\xB0\xD1\x81\xD0\xBB".force_encoding("UTF-8")
# => "Касл"