sql >> Base de Datos >  >> RDS >> PostgreSQL

secuencia de bytes no válida para codificar UTF8

Si necesita almacenar datos UTF8 en su base de datos, necesita una base de datos que acepte UTF8. Puede verificar la codificación de su base de datos en pgAdmin. Simplemente haga clic derecho en la base de datos y seleccione "Propiedades".

Pero ese error parece indicarle que hay algunos datos UTF8 no válidos en su archivo fuente. Eso significa que la copy La utilidad ha detectado o adivinado que le está dando un archivo UTF8.

Si está ejecutando alguna variante de Unix, puede verificar la codificación (más o menos) con el file utilidad.

$ file yourfilename
yourfilename: UTF-8 Unicode English text

(Creo que eso también funcionará en Mac en la terminal). No estoy seguro de cómo hacerlo en Windows.

Si usa esa misma utilidad en un archivo que proviene de sistemas Windows (es decir, un archivo que no codificado en UTF8), probablemente mostrará algo como esto:

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

Si las cosas siguen siendo raras, puede intentar convertir sus datos de entrada a una codificación conocida, cambiar la codificación de su cliente o ambas cosas. (Realmente estamos ampliando los límites de mi conocimiento sobre codificaciones).

Puedes usar el iconv utilidad para cambiar la codificación de los datos de entrada.

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

Puede cambiar la codificación psql (el cliente) siguiendo las instrucciones en Compatibilidad con juegos de caracteres. En esa página, busque la frase "Para habilitar la conversión automática de juegos de caracteres".