sql >> Base de Datos >  >> RDS >> PostgreSQL

Rails 3, Heroku:Taps Server Error:PGError:ERROR:secuencia de bytes no válida para codificar UTF8:0xba

El numero sign , º , es 0xBA en ISO-8869-1 no UTF-8. Entonces, su archivo CSV está codificado con Latin-1 pero está tratando de almacenarlo en su base de datos como UTF-8 sin corregir la codificación.

Puede intentar decirle a su biblioteca CSV que está tratando con texto codificado en Latin-1 y tal vez se encargue de convertirlo a UTF-8. Si eso no funciona, puede hacerlo usted mismo con Iconv :

ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
 => ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
 => ["°"]

No tiene problemas con SQLite porque SQLite tiende a ser muy indulgente y tiene un sistema de tipos muy flexible. PostgreSQL, OTOH, tiende a ser bastante estricto y se queja adecuadamente si intenta alimentarlo con datos no válidos. Le recomiendo que deje de desarrollar sobre SQLite si va a implementar en Heroku y PostgreSQL, hay otras diferencias que causarán problemas (el comportamiento de GROUP BY y LIKE, por ejemplo).