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

Como converter string para unicode usando o PostgreSQL?


Os bancos de dados PostgreSQL possuem um tipo de caractere nativo, a "codificação do servidor". Geralmente é utf-8.

Todo o texto está nesta codificação. Texto de codificação misto não é suportado, exceto se armazenado como bytea (ou seja, como sequências de bytes opacas).

Você não pode armazenar strings "unicode" ou "não-unicode", e o PostgreSQL não tem o conceito de "varchar" vs "nvarchar". Com utf-8, os caracteres que se enquadram no intervalo ASCII de 7 bits (e alguns outros) são armazenados como um único byte, e caracteres mais amplos exigem mais armazenamento, por isso é automático. utf-8 requer mais armazenamento do que ucs-2 ou utf-16 para texto com caracteres "largos", mas menos para texto que é uma mistura.

O PostgreSQL converte automaticamente de/para a codificação de texto do cliente, usando o client_encoding contexto. Não há necessidade de converter explicitamente.

Se o seu cliente for "Unicode" (que os produtos da Microsoft costumam dizer quando significam UCS-2 ou UTF-16), a maioria dos drivers de cliente cuida de qualquer conversão utf-8 <--> utf-16 para você.

Portanto, você não precisa se preocupar, desde que seu cliente faça I/O com opções de charset corretas e defina uma client_encoding correta que corresponda aos dados que ele realmente envia no fio. (Isso é automático com a maioria dos drivers cliente como PgJDBC, nPgSQL ou o driver Unicode psqlODBC).

Ver: