znak numeryczny
, º
, to 0xBA w ISO-8869-1
nie UTF-8. Więc twój plik CSV jest zakodowany w Latin-1, ale próbujesz zapisać go w swojej bazie danych jako UTF-8 bez poprawiania kodowania.
Możesz spróbować powiedzieć swojej bibliotece CSV, że zajmuje się tekstem zakodowanym w języku Latin-1 i może zajmie się konwersją do UTF-8. Jeśli to nie zadziała, możesz zrobić to sam za pomocą Ikona :
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
=> ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
=> ["°"]
Nie masz problemów z SQLite, ponieważ SQLite jest bardzo wyrozumiały i ma bardzo luźny system typów. PostgreSQL, OTOH, jest dość surowy i właściwie narzeka, jeśli spróbujesz podać mu nieprawidłowe dane. Zalecam zaprzestanie programowania na SQLite, jeśli zamierzasz wdrażać Heroku i PostgreSQL, istnieją inne różnice, które mogą powodować problemy (na przykład zachowanie GROUP BY i LIKE).