ROR ASCII-8BIT A UTF-8 con simboli non latini (cirillici) in rete :: http.get_response.body

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

  •  13-12-2019
  •  | 
  •  

Domanda

Ho bisogno di ottenere alcuni dati tramite net :: http, funziona bene con la risposta in ASCII-8BIT.Il problema è come codificarlo in UTF8 e salvare tutti i simboli non latini?

Con @content.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '') ho perso tutti i simboli cirillici

Con @content.encode('utf-8', 'binary') ottengo l'errore "\xCB" from ASCII-8BIT to UTF-8

Con @content.force_encoding("UTF-8) ottengo ������� invece di simboli cirillici

Non riesco a trovare la risposta con la ricerca di Google.

È stato utile?

Soluzione

Il problema è risolto con

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
.

qui è più dati completi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top