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

Comment convertir une chaîne en unicode à l'aide de PostgreSQL ?

Les bases de données PostgreSQL ont un type de caractère natif, le « codage du serveur ». Il s'agit généralement d'utf-8.

Tout le texte est dans cet encodage. Le texte d'encodage mixte n'est pas pris en charge, sauf s'il est stocké en tant que bytea (c'est-à-dire sous forme de séquences d'octets opaques).

Vous ne pouvez pas stocker de chaînes "unicode" ou "non-unicode", et PostgreSQL n'a aucun concept de "varchar" vs "nvarchar". Avec utf-8, les caractères qui appartiennent à la plage ASCII 7 bits (et quelques autres) sont stockés sous la forme d'un seul octet, et les caractères plus larges nécessitent plus de stockage, donc c'est juste automatique. utf-8 nécessite plus de stockage que ucs-2 ou utf-16 pour le texte composé uniquement de caractères "larges", mais moins pour le texte mélangé.

PostgreSQL convertit automatiquement vers/depuis l'encodage de texte du client, en utilisant le client_encoding paramètre. Il n'est pas nécessaire de convertir explicitement.

Si votre client est "Unicode" (ce que les produits Microsoft ont tendance à dire lorsqu'ils signifient UCS-2 ou UTF-16), la plupart des pilotes clients s'occupent de toute conversion utf-8 <--> utf-16 pour vous.

Vous ne devriez donc pas avoir à vous en soucier, tant que votre client effectue des E/S avec les options de jeu de caractères correctes et définit un client_encoding correct qui correspond aux données qu'il envoie réellement sur le fil. (Ceci est automatique avec la plupart des pilotes clients tels que PgJDBC, nPgSQL ou le pilote Unicode psqlODBC).

Voir :