Неверная последовательность байтов в UTF-8 (ArgumentError)
Я пытаюсь запустить Ruby script и всегда получаю сообщение об ошибке в этой строке:
file_content.gsub(/dr/i,'med')
Где я пытаюсь заменить "dr" на "med".
Ошибка:
program.rb:4:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)
Почему это, как я могу исправить эту проблему?
Я работаю над машиной MAC OS X Yosemite, с Ruby 2.2.1p85.
Ответы
Ответ 1
Вероятно, ваша строка не в формате UTF-8, поэтому используйте
if ! file_content.valid_encoding?
s = file_content.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
s.gsub(/dr/i,'med')
end
См. "Ruby 2.0.0 String # Match ArgumentError: неверная последовательность байтов в UTF-8".
Ответ 2
Это случается со мной, когда я нахожусь в консоли rails, случайно меняю клавиатуру на кириллицу и набираю в ней букву "с". Мне понадобилось 2 часа, чтобы понять, что не так :)