2012-07-23 7 views
9

Estoy intentando descargar un archivo zip de un sitio web y poner esos datos en una tabla. La descarga ha estado funcionando antes, pero de repente, ya no es así. Obtengo un problema de `` write ': "\ xB6" de ASCII-8BIT a UTF-8 (Encoding :: UndefinedConversionError). Muy extraño, nada ha cambiado desde la última vez que ejecuté el script. Aquí está la parte del código que está teniendo los problemas. Estoy usando una gema que me permite analizar el archivo DBF dentro del archivo zip.Error de conversión no definido de codificación - Ruby on Rails, Error al escribir

Aquí está el código:

`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) 

Gracias por la ayuda

ACTUALIZACIÓN: Me estoy quedando dentro de los carriles, obviamente. Ejecuté el script fuera del entorno de los rieles, y funcionó bien. Entonces Rails está interfiriendo de alguna manera con el proceso de escritura.

ACTUALIZACIÓN 2: SOLUCIONADO - Cambié "w" a "wb" aparentemente esto es causado por los rieles 3+. No se me ocurrió intentar esto antes. Espero que esto ayude a otras personas.

Respuesta

2

Probablemente también podría haber hecho que al pasar

:output_encoding => "binary" 

a File.open, que creo que haría lo mismo que el modo 'wb', quizá con mayor claridad. Pero buen trabajo averiguar 'wb' :).

Sí, en ruby ​​1.9, que es la codificación de caracteres, a menudo necesita decir cosas diferentes sobre la codificación que desea, incluida la "codificación nula" 'binario'.

Es posible que Rails establezca el Encoding.default_external en UTF-8, y File está usando Encoding.default_external, eso podría ser el motivo por el cual los rieles vs los rieles no hacen la diferencia.

Problemas de codificación en ruby ​​1.9 definitivamente pueden ser muy confusos muy rápido, con muchos estados normalmente ocultos que pueden afectar exactamente lo que sucede.

Cuestiones relacionadas