PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

sequência de bytes inválida para codificação UTF8


Se você precisar armazenar dados UTF8 em seu banco de dados, precisará de um banco de dados que aceite UTF8. Você pode verificar a codificação do seu banco de dados no pgAdmin. Basta clicar com o botão direito do mouse no banco de dados e selecionar "Propriedades".

Mas esse erro parece estar informando que há alguns dados UTF8 inválidos em seu arquivo de origem. Isso significa que a copy utilitário detectou ou adivinhou que você está alimentando um arquivo UTF8.

Se você estiver executando em alguma variante do Unix, poderá verificar a codificação (mais ou menos) com o file Utilitário.
$ file yourfilename
yourfilename: UTF-8 Unicode English text

(Acho que funcionará em Macs no terminal também.) Não tenho certeza de como fazer isso no Windows.

Se você usar esse mesmo utilitário em um arquivo que veio de sistemas Windows (ou seja, um arquivo que não codificado em UTF8), provavelmente mostrará algo assim:
$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators

Se as coisas ficarem estranhas, você pode tentar converter seus dados de entrada para uma codificação conhecida, alterar a codificação do seu cliente ou ambos. (Estamos realmente esticando os limites do meu conhecimento sobre codificações.)

Você pode usar o iconv utilitário para alterar a codificação dos dados de entrada.
iconv -f original_charset -t utf-8 originalfile > newfile

Você pode alterar a codificação do psql (o cliente) seguindo as instruções em Suporte ao conjunto de caracteres. Nessa página, procure a frase "Para habilitar a conversão automática do conjunto de caracteres".