将表导出到 YAML 文件时遇到编码问题



当我将表导出到 yaml 文件时出现以下错误:

Encoding::UndefinedConversionError: "xC3" from ASCII-8BIT to UTF-8

这是生成错误的代码:

  File.open("#{Rails.root}/lib/users.yml", 'w') do |file|
    users = User.all
    YAML::dump(users, file)
  end

我尝试在所有用户模型的内容属性上执行此操作:

about_me.force_encoding("utf-8")
save

。显然无济于事。我是否正确强制编码?有没有其他方法可以解决这个问题?我不介意摆脱非utf8字符;我该怎么做?

这为我修复了此错误:

myString.unpack('U*').pack('U*')
您可以使用

https://github.com/astro/utf8cleaner 来清理非 utf8 字符。你可以试试str.encode('utf-8', :invalid => :replace, :replace => ''),由于某种原因,它对我不起作用。您可以尝试的另一件事是用 ASCII-8BIT 编写文件,例如在 File.open('file.yml', 'w:ASCII-8BIT') 中。

相关内容

最新更新