" \ XC2"从ASCII-8BIT转换为UTF-8到UTF-8

时间:2013-04-25 15:28:35

标签: ruby-on-rails encoding haml rubinius

我有一个使用MRI 1.9.3运行良好的导轨项目。当我尝试使用Rubinius运行时,我在app/views/layouts/application.html.haml

中收到此错误
  

“\ xC2”到UTF-8,从ASCII-8BIT转换为UTF-8

1 个答案:

答案 0 :(得分:9)

事实证明该页面有一个无效字符(一个符号'·'),我用下面的代码(this gistthis question的信用)发现:

lines = IO.readlines("app/views/layouts/application.html.haml").map do |line|
  line.force_encoding('ASCII-8BIT').encode('UTF-8', :invalid => :replace, :undef => :replace, :replace => '?')
end

File.open("app/views/layouts/application.html.haml", "w") do |file|
  file.puts(lines)
end

运行此代码后,我可以使用简单的git diff找到有问题的字符,并将代码移到顶部带有# encoding: utf-8的帮助文件中。 我不确定为什么这不会因MRI而失败,但它应该因为我没有指定haml文件的编码。