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).