PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Rails 3, Heroku:Taps Errore del server:PGError:ERROR:sequenza di byte non valida per la codifica UTF8:0xba

Il segno del numero , º , è 0xBA in ISO-8869-1 non UTF-8. Quindi il tuo file CSV è codificato con Latin-1 ma stai cercando di archiviarlo nel tuo database come UTF-8 senza correggere la codifica.

Puoi provare a dire alla tua libreria CSV che ha a che fare con testo codificato Latin-1 e forse si occuperà della conversione in UTF-8. Se non funziona, puoi farlo da solo con Conv :

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

Non hai problemi con SQLite perché SQLite tende a essere molto indulgente e ha un sistema di tipi molto lento. PostgreSQL, OTOH, tende ad essere piuttosto severo e si lamenta correttamente se si tenta di fornirgli dati non validi. Ti consiglio di interrompere lo sviluppo su SQLite se intendi eseguire il deployment su Heroku e PostgreSQL, ci sono altre differenze che causeranno problemi (il comportamento di GROUP BY e LIKE per esempio).