\xC2 в UTF-8 при преобразовании из ASCII-8BIT в UTF-8

У меня есть проект rails, который отлично работает с MRI 1.9.3. Когда я пытаюсь запустить Rubinius, я получаю эту ошибку в app/views/layouts/application.html.haml:

"\xC2" в UTF-8 при преобразовании из ASCII-8BIT в UTF-8


person alf    schedule 25.04.2013    source источник


Ответы (1)


Оказывается, на странице был недопустимый символ (вставка '·'), что я обнаружил с помощью следующего кода (кредиты этот смысл и этот вопрос):

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 вверху. Я не уверен, почему это не работает с МРТ, но должно, поскольку я не указываю кодировку файла haml.

person alf    schedule 25.04.2013