ROR ASCII-8BIT до UTF-8 с непластанскими (кириллицами) символами в сети :: http.get_response.body.body

StackOverflow https://stackoverflow.com//questions/11701062

  •  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
.

Вот более полные данные

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top