Попробуйте это:
connection.get.body.force_encoding('ISO-8859-1').encode('UTF-8')
Я не знаю насчет Фарадея, но, судя по ошибке Encoding::UndefinedConversionError
, возможно, так оно и есть. Я предполагаю, connection.get.body
возвращает нормальный экземпляр String или его эквивалент.
Фон
Как говорится в официальном документе (версия 2.5.1) , вам не следует пытаться преобразовать ASCII-8BIT
в любые другие кодировки:
Encoding :: ASCII_8BIT - это специальная кодировка, которая обычно используется для строки байтов, а не строки символов.
Так называемым расширенным ASCII, который содержит некоторые знаки препинания для алфавита, обычно является ISO-8859-1, хотя существуют и другие методы кодирования. Конечно, кодовая точка o
с '
равна \ xF3 в ISO-8859-1. Вот фрагмент кода, чтобы продемонстрировать это:
"\xf3".force_encoding('ISO-8859-1').encode('UTF-8')
# => "ó"
"\xf3".force_encoding('ASCII-8BIT').encode('UTF-8')
# => Encoding::UndefinedConversionError
Этот прошлый ответ объясняет это более подробно.