2010-09-07 23 views
9

Sé que en Ruby 1.9 puede recodificar fácilmente una cadena como esta.Conversión simple de cadena a UTF-8 en Ruby 1.8

s = s.encode('UTF-8') 

¿Cuál es el equivalente en Ruby 1.8? Qué requiere líneas necesita

Todos los tutoriales que he visto son innecesariamente complicados y no entiendo lo que está pasando.

+0

rubí 2,8? Ruby 2.9? –

+1

Perdón, esa es la conversación cansada - corregida. – Alex

Respuesta

10

James Edward Gray II tiene un detailed collections of posts que trata con problemas de codificación y juego de caracteres en Ruby 1.8. La publicación titulada Encoding Conversion with iconv contiene información detallada.

Resumen: la gema iconv hace todo el trabajo de convertir codificaciones. Asegúrese de que está instalado con: (. Sin codificación intrínseca)

gem install iconv 

Ahora, lo que necesita saber qué codificación de su cadena es Actualmente en como Ruby 1,8 golosinas cadenas como una matriz de bytes Por ejemplo, digamos que su cadena estaba en latin1 y que quería convertirlo en UTF-8

require 'iconv' 

string_in_utf8_encoding = Iconv.conv("UTF8", "LATIN1", string_in_latin1_encoding) 

El orden de los argumentos es:

  1. codificación de destino
  2. Fuente codificación
  3. String para convertir
+0

¿Qué puedo hacer si no estoy seguro de la codificación de la cadena inicial? ¿Hay alguna forma de detectarlo? – Alex

+0

En general? No. Si las posibilidades de codificación entrantes son limitadas, podría usar algún tipo de heurística, pero no sería completamente precisa o confiable (cada vez más fiable a medida que aumentara el número de codificaciones posibles). – rjk

+0

Saludos. Supongo que porque es entrada de un campo de SQL, puedo suponer que es este tipo de codificación de caracteres. – Alex

Cuestiones relacionadas