PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

séquence d'octets invalide pour l'encodage UTF8

Si vous avez besoin de stocker des données UTF8 dans votre base de données, vous avez besoin d'une base de données qui accepte UTF8. Vous pouvez vérifier l'encodage de votre base de données dans pgAdmin. Cliquez simplement sur la base de données avec le bouton droit de la souris et sélectionnez "Propriétés".

Mais cette erreur semble vous dire qu'il y a des données UTF8 invalides dans votre fichier source. Cela signifie que la copy l'utilitaire a détecté ou deviné que vous lui fournissez un fichier UTF8.

Si vous utilisez une variante d'Unix, vous pouvez vérifier l'encodage (plus ou moins) avec le file utilitaire.

$ file yourfilename
yourfilename: UTF-8 Unicode English text

(Je pense que cela fonctionnera également sur les Mac dans le terminal.) Je ne sais pas comment faire cela sous Windows.

Si vous utilisez ce même utilitaire sur un fichier provenant de systèmes Windows (c'est-à-dire un fichier qui n'est pas encodé en UTF8), il affichera probablement quelque chose comme ceci :

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

Si les choses restent bizarres, vous pouvez essayer de convertir vos données d'entrée dans un encodage connu, de modifier l'encodage de votre client, ou les deux. (Nous repoussons vraiment les limites de mes connaissances sur les encodages.)

Vous pouvez utiliser l'iconv utilitaire pour changer l'encodage des données d'entrée.

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

Vous pouvez modifier l'encodage psql (le client) en suivant les instructions sur la prise en charge des jeux de caractères. Sur cette page, recherchez la phrase "Pour activer la conversion automatique du jeu de caractères".