sql >> Database >  >> RDS >> PostgreSQL

ongeldige bytereeks voor codering van UTF8

Als u UTF8-gegevens in uw database wilt opslaan, hebt u een database nodig die UTF8 accepteert. U kunt de codering van uw database controleren in pgAdmin. Klik met de rechtermuisknop op de database en selecteer "Eigenschappen".

Maar die fout lijkt u te vertellen dat er enkele ongeldige UTF8-gegevens in uw bronbestand staan. Dat betekent dat de copy hulpprogramma heeft gedetecteerd of vermoed dat u een UTF8-bestand invoert.

Als je onder een variant van Unix draait, kun je de codering (min of meer) controleren met het file hulpprogramma.

$ file yourfilename
yourfilename: UTF-8 Unicode English text

(Ik denk dat dat ook op Macs in de terminal zal werken.) Ik weet niet zeker hoe dat onder Windows moet.

Als u hetzelfde hulpprogramma gebruikt op een bestand dat afkomstig is van Windows-systemen (dat wil zeggen een bestand dat niet gecodeerd in UTF8), zal het waarschijnlijk zoiets als dit tonen:

$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators

Als de zaken raar blijven, kunt u proberen uw invoergegevens om te zetten naar een bekende codering, de codering van uw client te wijzigen, of beide. (We verleggen echt de grenzen van mijn kennis over coderingen.)

U kunt de iconv . gebruiken hulpprogramma om de codering van de invoergegevens te wijzigen.

iconv -f original_charset -t utf-8 originalfile > newfile

U kunt de psql-codering (de client) wijzigen volgens de instructies in Character Set Support. Zoek op die pagina naar de zin "Automatische tekensetconversie inschakelen".



  1. Regex-patroon in de functie SQL Replace?

  2. Staat Oracle de niet-vastgelegde leesoptie toe?

  3. Kan een externe sleutel NULL en/of duplicaat zijn?

  4. Hoe de UTF8-tekenset in Oracle configureren?