Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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
Mysql RubyonRails UTF8问题_Mysql_Ruby On Rails_Ruby_Utf 8 - Fatal编程技术网

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问题。为了解决这个问题,我做了:

  • 我的MySQL表在UTF8 UTF8\u general\u ci中
  • 在application.rb I粘贴中:

    class Application < Rails::Application
        config.encoding = "utf-8"
    
    类应用程序
  • 但所有这些步骤对我都没有帮助。在MySQL表中,所有内容看起来都是正确的,这个问题只涉及俄语字母


    有什么办法解决这个问题吗?

    实际上,字符串值似乎是正确的,如果你解码它,就会出现
    “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”]:数组`try
    a.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")
    # => "Касл"