RoR ASCII-8bit a UTF-8 con símbolos no latinos (cirílicos) en Net::HTTP.get_response.body

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

  •  13-12-2019
  •  | 
  •  

Pregunta

Necesito obtener algunos datos a través de Net::HTTP, funciona bien porque recibo la respuesta en ASCII-8bit.El problema es ¿cómo codificar esto en utf8 y guardar todos los símbolos no latinos?

Con @content.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '') pierdo todos los símbolos cirílicos

Con @content.encode('utf-8', 'binary') yo obtengo "\xCB" from ASCII-8BIT to UTF-8 error

Con @content.force_encoding("UTF-8) me sale ������ en lugar de símbolos cirílicos

No puedo encontrar la respuesta con la búsqueda de Google.

¿Fue útil?

Solución

El problema se soluciona 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

aqui tienes datos mas completos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top