PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

sequenza di byte non valida per la codifica UTF8

Se è necessario archiviare i dati UTF8 nel database, è necessario un database che accetti UTF8. Puoi controllare la codifica del tuo database in pgAdmin. Basta fare clic con il pulsante destro del database e selezionare "Proprietà".

Ma quell'errore sembra dirti che ci sono alcuni dati UTF8 non validi nel tuo file di origine. Ciò significa che la copy l'utilità ha rilevato o indovinato che gli stai alimentando un file UTF8.

Se stai utilizzando qualche variante di Unix, puoi controllare la codifica (più o meno) con il file utilità.

$ file yourfilename
yourfilename: UTF-8 Unicode English text

(Penso che funzionerà anche sui Mac nel terminale.) Non sono sicuro di come farlo in Windows.

Se utilizzi la stessa utilità su un file proveniente da sistemi Windows (ovvero un file non codificato in UTF8), probabilmente mostrerà qualcosa del genere:

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

Se le cose rimangono strane, potresti provare a convertire i tuoi dati di input in una codifica nota, a modificare la codifica del tuo client o entrambi. (Stiamo davvero estendendo i limiti delle mie conoscenze sulle codifiche.)

Puoi usare il iconv utility per modificare la codifica dei dati di input.

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

È possibile modificare la codifica di psql (il client) seguendo le istruzioni su Character Set Support. In quella pagina, cerca la frase "Per abilitare la conversione automatica del set di caratteri".