Ruby on Rails UTF8问题

时间:2015-11-20 18:09:56

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

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

    class Application < Rails::Application
        config.encoding = "utf-8"
    
  3. 但所有这些步骤对我没有帮助。在MySQL表中所有看起来都正确,这个问题只是俄文字母。

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

2 个答案:

答案 0 :(得分:1)

"\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")
# => "Касл"

答案 1 :(得分:0)

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

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