32 votos

CSV de Ruby/Rails análisis, secuencia de bytes no válida en UTF-8

Estoy tratando de analizar un archivo CSV generado a partir de una hoja de cálculo de Excel.

Aquí está mi código

require 'csv'
file = File.open("input_file")
csv = CSV.parse(file)

Pero me sale este error

ArgumentError: invalid byte sequence in UTF-8

Creo que el error es porque Excel codifica el archivo en ISO 8859-1 (Latin-1) y no enUTF-8

Alguien me puede ayudar con una solución para este problema, por favor

Gracias de antemano.

60voto

Linuxios Puntos 16966

Usted necesita decirle a rubí que el archivo esta en ISO-8859-1. Cambiar tu línea abierta del archivo a esto:

file=File.open("input_file", "r:ISO-8859-1")

El segundo argumento dice Ruby abrir lectura sólo con la codificación ISO-8859-1.

12voto

napalm Puntos 348

Puede suministrar fuente codificación recto en el parámetro de modo de archivo:

CSV.foreach( "file.csv", "r:windows-1250" ) do |row|
   <your code>
end

0voto

Eliza A Puntos 86

Guarde el archivo en utf-8, a menos que por alguna razón que usted necesita para ahorrar diverso en cuyo caso se puede especificar el conjunto codificado al leer el archivo

0voto

Gagan Puntos 512

Añadir segundo argumento "r:ISO-8859-1" comoFile.open("input_file","r:ISO-8859-1" )

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X