Rodrigo Hjort wrote: > Precisei fazer a carga de alguns arquivos .CSV codificados com Unicode > para o PostgreSQL num banco em LATIN1. > > Tratavam-se de palavras provenientes de dicionários em diversos idiomas, > como francês e alemão, que possuem caracteres que não podem ser > convertidos. > > Tentei duas abordagens: > 1. criar o banco em UTF-8, fazer a carga normalmente e depois usar > funções como CONVERT() e TO_ASCII() para tirar a acentuação das palavras > - dava erro! > 2. converter o arquivo externamente, usando o "iconv", para depois dar a > carga normalmente - conversão não era suportada para alguns caracteres..! > É o procedimento que sempre uso. Mas como assim não conseguiu converter alguns caracteres? Você detectou quais eram eles? O hexdump pode te ajudar aqui. Outra coisa, você tem certeza que o conjunto de caracteres (charset) de origem era UTF-8 [1]? Voce também pode olhar no PostgreSQL (backend/utils/mb/Unicode) para verificar como o PostgreSQL está fazendo o mapeamento.
> Será que daria para implementar uma outra função de conversão no > PostgreSQL ( i.e: CREATE CONVERSION utf8_to_ascii)? > Acho que o tal mapeamento não existe porque o ASCII é um subconjunto do UTF (aka UCS). [1] http://www.unicode.org/charts/ -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
