numero-tegnet
, º
, er 0xBA i ISO-8869-1
ikke UTF-8. Så din CSV-fil er kodet med Latin-1, men du forsøger at gemme den i din database som UTF-8 uden at fikse kodningen.
Du kan prøve at fortælle dit CSV-bibliotek, at det beskæftiger sig med Latin-1-kodet tekst, og måske vil det sørge for at konvertere til UTF-8. Hvis det ikke virker, så kan du gøre det selv med Ikonv :
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
=> ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
=> ["°"]
Du har ikke problemer med SQLite, fordi SQLite har tendens til at være meget tilgivende, og det har et meget løst system. PostgreSQL, OTOH, har en tendens til at være ret streng og klager ordentligt, hvis du forsøger at tilføre den ugyldige data. Jeg vil anbefale, at du holder op med at udvikle oven på SQLite, hvis du skal implementere til Heroku og PostgreSQL, der er andre forskelle, der vil forårsage problemer (f.eks. adfærden hos GROUP BY og LIKE).