Tanda angka
, º
, adalah 0xBA di ISO-8869-1
bukan UTF-8. Jadi file CSV Anda dikodekan dengan Latin-1 tetapi Anda mencoba menyimpannya di database Anda sebagai UTF-8 tanpa memperbaiki pengkodean.
Anda dapat mencoba memberi tahu perpustakaan CSV Anda bahwa itu berurusan dengan teks yang disandikan Latin-1 dan mungkin itu akan menangani konversi ke UTF-8. Jika tidak berhasil, Anda dapat melakukannya sendiri dengan Ikon :
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
=> ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
=> ["°"]
Anda tidak mengalami masalah dengan SQLite karena SQLite cenderung sangat pemaaf dan memiliki sistem tipe yang sangat longgar. PostgreSQL, OTOH, cenderung agak ketat dan mengeluh dengan benar jika Anda mencoba memberinya data yang tidak valid. Saya sarankan Anda berhenti mengembangkan di atas SQLite jika Anda akan menerapkan Heroku dan PostgreSQL, ada perbedaan lain yang akan menyebabkan masalah (misalnya perilaku GROUP BY dan LIKE).