sql >> Database >  >> RDS >> PostgreSQL

Rails 3, Heroku:Taps Server Error:PGError:ERROR:ongeldige bytereeks voor codering van UTF8:0xba

Het numero-teken , º , is 0xBA in ISO-8869-1 niet UTF-8. Dus uw CSV-bestand is gecodeerd met Latin-1, maar u probeert het in uw database op te slaan als UTF-8 zonder de codering te corrigeren.

U kunt proberen uw CSV-bibliotheek te vertellen dat het te maken heeft met Latin-1-gecodeerde tekst en misschien zorgt het voor conversie naar UTF-8. Als dat niet werkt, dan kun je het zelf doen met Iconv :

ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xba")
 => ["º"]
ruby-1.9.2 > Iconv.iconv('UTF-8', 'ISO-8859-1', "\xb0")
 => ["°"]

Je hebt geen problemen met SQLite omdat SQLite meestal erg vergevingsgezind is en het een erg los type systeem heeft. PostgreSQL, OTOH, is meestal nogal streng en klaagt terecht als je probeert om het ongeldige gegevens in te voeren. Ik raad je aan om te stoppen met ontwikkelen bovenop SQLite als je gaat implementeren naar Heroku en PostgreSQL, er zijn andere verschillen die problemen kunnen veroorzaken (bijvoorbeeld het gedrag van GROUP BY en LIKE).




  1. Voer tekst en speciale tekens in en MySQL

  2. BESTEL DOOR de IN-waardelijst

  3. MYSQL complexe Unie

  4. 2 queries tegelijk uitvoeren op Oracle SQL Developer?