numerotecknet
, º
, är 0xBA i ISO-8869-1
inte UTF-8. Så din CSV-fil är kodad med Latin-1 men du försöker lagra den i din databas som UTF-8 utan att fixa kodningen.
Du kan försöka tala om för ditt CSV-bibliotek att det hanterar Latin-1-kodad text och kanske kommer det att ta hand om konverteringen till UTF-8. Om det inte fungerar kan du göra det själv 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 inte problem med SQLite eftersom SQLite tenderar att vara mycket förlåtande och det har ett väldigt löst system. PostgreSQL, OTOH, tenderar att vara ganska strikt och klagar ordentligt om du försöker mata in ogiltiga data. Jag skulle rekommendera att du slutar utveckla ovanpå SQLite om du ska distribuera till Heroku och PostgreSQL, det finns andra skillnader som kommer att orsaka problem (beteendet för GROUP BY och LIKE till exempel).