external encoding ruby
Cómo convertir una cadena a UTF8 en Ruby (3)
Estoy escribiendo un rastreador que usa Hpricot. Descarga una lista de cadenas desde alguna página web, luego intento escribirla en el archivo. Algo está mal con la codificación:
"/xC3" from ASCII-8BIT to UTF-8
Tengo elementos que se muestran en una página web y se imprimen de esta manera:
Développement
el str.encoding
devuelve UTF-8
, por lo que force_encoding(''UTF-8'')
no ayuda. ¿Cómo puedo convertir esto a UTF-8 legible?
" ruby 1.9: secuencia de bytes no válida en UTF-8 " describió otro buen enfoque con menos código:
file_contents.encode!(''UTF-16'', ''UTF-8'')
Parece que su cadena cree que es UTF-8, pero en realidad, es otra cosa, probablemente ISO-8859-1.
Defina (fuerce) la codificación correcta primero, luego conviértala a UTF-8.
En tu ejemplo:
puts "Développement".encode(''iso-8859-1'').encode(''utf-8'')
Una alternativa es:
puts "/xC3".force_encoding(''iso-8859-1'').encode(''utf-8'') #-> Ã
Si Ã
no tiene sentido, intente con otra codificación.
Su cadena parece haber sido codificada de manera incorrecta:
"Développement".encode("iso-8859-1").force_encoding("utf-8")
#=> "Développement"