RoR ASCII de 8 bits para a codificação UTF-8 com os não-latinos (cirílico) símbolos na Net::HTTP.get_response.corpo

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

  •  13-12-2019
  •  | 
  •  

Pergunta

Eu precisa para obter alguns dados via Net::HTTP, ele funciona bem, por que eu receber a resposta em ASCII de 8 bits.O problema é como codificar este utf8 e salvar todos os não-símbolos latinos?

Com @content.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '') vou perder todos os cirílico símbolos

Com @content.encode('utf-8', 'binary') eu fico "\xCB" from ASCII-8BIT to UTF-8 erro

Com @content.force_encoding("UTF-8) eu fico ������ em vez de símbolos cirílico

Eu não consigo encontrar resposta com a pesquisa do google.

Foi útil?

Solução

Problema é resolvido com

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

aqui é o mais completo de dados

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top