sql >> Databáze >  >> RDS >> PostgreSQL

Rails 3, Heroku:Taps Chyba serveru:PGError:ERROR:neplatná sekvence bajtů pro kódování UTF8:0xba

znak numero , º , je 0xBA v ISO-8869-1 ne UTF-8. Váš soubor CSV je tedy zakódován pomocí Latin-1, ale vy se jej pokoušíte uložit do databáze jako UTF-8, aniž byste kódování opravili.

Můžete zkusit své knihovně CSV sdělit, že pracuje s textem zakódovaným v Latin-1 a možná se postará o převod do UTF-8. Pokud to nefunguje, můžete to udělat sami 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")
 => ["°"]

S SQLite nemáte potíže, protože SQLite má tendenci být velmi shovívavý a má velmi volný typový systém. PostgreSQL, OTOH, má tendenci být spíše přísný a správně si stěžuje, pokud se do něj pokoušíte vložit neplatná data. Pokud se chystáte nasadit na Heroku a PostgreSQL, doporučoval bych, abyste přestali vyvíjet nad SQLite, jsou zde další rozdíly, které způsobí problémy (například chování GROUP BY a LIKE).




  1. Zkopírujte data tabulky z jedné DB do druhé

  2. balíček selhává – nelze najít klientskou knihovnu PostgreSQL (libpq)

  3. Upozornění MariaDB:'[email protected]' má obojí... Heslo bude ignorováno

  4. MYSQL:Jak převést řetězec na měsíc (číslo)