当我将表导出到 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') 中。