ROR ASCII-8BIT до UTF-8 с непластанскими (кириллицами) символами в сети :: http.get_response.body.body
-
13-12-2019 - |
Вопрос
Мне нужно получить некоторые данные через Net :: http, это работает хорошо, я получаю ответ на ASCII-8bit.Проблема в том, как кодировать это в UTF8 и сохранить все ненатинские символы?
с @content.encode('utf-8', 'binary', :invalid => :replace,
:undef => :replace, :replace => '')
Я пропускаю все кириллицы символы
с @content.encode('utf-8', 'binary')
я получаю об ошибке gensacodicetacode
с "\xCB" from ASCII-8BIT to UTF-8
I получаю ������ вместо кириллических символов
Я не могу найти ответ с поиском Google.
Решение
Проблема решается с
begin
cleaned = response.body.dup.force_encoding('UTF-8')
unless cleaned.valid_encoding?
cleaned = response.body.encode( 'UTF-8', 'Windows-1251' )
end
content = cleaned
rescue EncodingError
content.encode!( 'UTF-8', invalid: :replace, undef: :replace )
end
.
Не связан с StackOverflow