Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 20. Localisation | Avance rapide | Suivant |
Le support des jeux de caract�res dans PostgreSQL vous permet de rentrer du texte dans plusieurs jeux de caract�res, dont des jeux de caract�res � un octet tels que la s�rie ISO 8859 et des jeux de caract�res multi-octets tel que EUC (Extended Unix Code), Unicode et le code interne de Mule. Tous les jeux de caract�res peuvent �tre utilis�s de fa�on transparente au travers du serveur. (Si vous utilisez des fonctions d'extension d'autres sources, cela d�pend de la qualit� du code.) Le jeu de caract�res par d�faut est s�lectionn� pendant l'initialisation de votre cluster de base de donn�es PostgreSQL avec initdb. Le choix peut �tre outrepass� lorsqu'on cr�e une base de donn�es en utilisant createdb ou en utilisant la commande SQL CREATE DATABASE. Vous pouvez donc avoir de multiples bases chacune avec un jeux de caract�res diff�rents.
Le Tableau 20-1 montre les jeux de caract�res disponibles � l'utilisation sur le serveur.
Tableau 20-1. Jeux de Caract�res Serveur
Nom | Description |
---|---|
SQL_ASCII | ASCII |
EUC_JP | Japonais EUC |
EUC_CN | Chinois EUC |
EUC_KR | Cor�en EUC |
JOHAB | Cor�en EUC (base Hangle) |
EUC_TW | Taiwanais EUC |
UNICODE | Unicode (UTF-8) |
MULE_INTERNAL | Code interne de Mule |
LATIN1 | ISO 8859-1/ECMA 94 (Alaphabet latin no.1) |
LATIN2 | ISO 8859-2/ECMA 94 (Alaphabet latin no.2) |
LATIN3 | ISO 8859-3/ECMA 94 (Alaphabet latin no.3) |
LATIN4 | ISO 8859-4/ECMA 94 (Alaphabet latin no.4) |
LATIN5 | ISO 8859-9/ECMA 128 (Alaphabet latin no.5) |
LATIN6 | ISO 8859-10/ECMA 144 (Alaphabet latin no.6) |
LATIN7 | ISO 8859-13 (Alaphabet latin no.7) |
LATIN8 | ISO 8859-14 (Alaphabet latin no.8) |
LATIN9 | ISO 8859-15 (Alaphabet latin no.9) |
LATIN10 | ISO 8859-16/ASRO SR 14111 (Alaphabet latin no.10) |
ISO_8859_5 | ISO 8859-5/ECMA 113 (Latin/Cyrillique) |
ISO_8859_6 | ISO 8859-6/ECMA 114 (Latin/Arabe) |
ISO_8859_7 | ISO 8859-7/ECMA 118 (Latin/Greque) |
ISO_8859_8 | ISO 8859-8/ECMA 121 (Latin/Hebrew) |
KOI8 | KOI8-R(U) |
WIN | Windows CP1251 |
ALT | Windows CP866 |
WIN1256 | Windows CP1256 (Arabic) |
TCVN | TCVN-5712/Windows CP1258 (Vietnamien) |
WIN874 | Windows CP874 (Thai) |
Important�: Avant PostgreSQL 7.2, LATIN5 signifiait, � tort, ISO 8859-5. A partir de 7.2, LATIN5 signifie ISO 8859-9. Si vous avez une base LATIN5 cr��e sur une version 7.1 ou ant�rieure et vous voulez migrer vers 7.2 ou une version plus r�cente, vous devriez faire attention � ce changement.
Tout les APIs ne supportent pas les jeux de caract�res de la liste. Par exemple, le pilot JDBC de PostgreSQL ne supporte pas MULE_INTERNAL, LATIN6, LATIN8 et LATIN10.
initdb d�finit le jeu de caract�res par d�faut pour un cluster PostgreSQL. Par exemple,
initdb -E EUC_JP
param�tre le jeu de caract�res (codage) � EUC_JP (Extended Unix Code for Japanese). Vous pouvez utiliser l'option --encoding au lieu de -E si vous pr�f�rez saisir les noms d'options longs. Si aucune option -E ou --encoding n'est donn�e, SQL_ASCII est utilis�.
Vous pouvez cr�er une base de donn�es avec un jeu de caract�re diff�rent:
createdb -E EUC_KR korean
Ceci va cr�er une base de donn�es appel�e korean qui utilisera le jeu de caract�re EUC_KR. Un autre moyen de r�aliser ceci est d'utiliser cette commande SQL :
CREATE DATABASE korean WITH ENCODING 'EUC_KR';
L'encodage pour une base de donn�es est conserv� dans le catalogue syst�me pg_database. Vous pouvez voir ceci en utilisant l'option -l ou la commande \l de psql.
$ psql -l List of databases Database | Owner | Encoding ---------------+---------+--------------- euc_cn | t-ishii | EUC_CN euc_jp | t-ishii | EUC_JP euc_kr | t-ishii | EUC_KR euc_tw | t-ishii | EUC_TW mule_internal | t-ishii | MULE_INTERNAL regression | t-ishii | SQL_ASCII template1 | t-ishii | EUC_JP test | t-ishii | EUC_JP unicode | t-ishii | UNICODE (9 rows)
PostgreSQL supporte les conversions automatiques de jeu de caract�res entre client et serveur pour certains jeux de caract�res. Les informations de conversion sont conserv�s dans le catalogue syst�me pg_conversion. Vous pouvez cr�er une nouvelle conversion en utilisant la commande SQL CREATE CONVERSION. PostgreSQL est livr� avec certaines conversions pr�d�finies. Ils sont list�s dans Tableau 20-2.
Tableau 20-2. Conversion de Jeux de Caract�res Client/Serveur
Jeu de Caract�res Serveur | Jeux de Caract�res Clients Disponibles |
---|---|
SQL_ASCII | SQL_ASCII, UNICODE, MULE_INTERNAL |
EUC_JP | EUC_JP, SJIS, UNICODE, MULE_INTERNAL |
EUC_CN | EUC_CN, UNICODE, MULE_INTERNAL |
EUC_KR | EUC_KR, UNICODE, MULE_INTERNAL |
JOHAB | JOHAB, UNICODE |
EUC_TW | EUC_TW, BIG5, UNICODE, MULE_INTERNAL |
LATIN1 | LATIN1, UNICODE MULE_INTERNAL |
LATIN2 | LATIN2, WIN1250, UNICODE, MULE_INTERNAL |
LATIN3 | LATIN3, UNICODE, MULE_INTERNAL |
LATIN4 | LATIN4, UNICODE, MULE_INTERNAL |
LATIN5 | LATIN5, UNICODE |
LATIN6 | LATIN6, UNICODE, MULE_INTERNAL |
LATIN7 | LATIN7, UNICODE, MULE_INTERNAL |
LATIN8 | LATIN8, UNICODE, MULE_INTERNAL |
LATIN9 | LATIN9, UNICODE, MULE_INTERNAL |
LATIN10 | LATIN10, UNICODE, MULE_INTERNAL |
ISO_8859_5 | ISO_8859_5, UNICODE, MULE_INTERNAL, WIN, ALT, KOI8 |
ISO_8859_6 | ISO_8859_6, UNICODE |
ISO_8859_7 | ISO_8859_7, UNICODE |
ISO_8859_8 | ISO_8859_8, UNICODE |
UNICODE | EUC_JP, SJIS, EUC_KR, UHC, JOHAB, EUC_CN, GBK, EUC_TW, BIG5, LATIN1 to LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, WIN, ALT, KOI8, WIN1256, TCVN, WIN874, GB18030, WIN1250 |
MULE_INTERNAL | EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, BIG5, LATIN1 to LATIN5, WIN, ALT, WIN1250, BIG5, ISO_8859_5, KOI8 |
KOI8 | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
WIN | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
ALT | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
WIN1256 | WIN1256, UNICODE |
TCVN | TCVN, UNICODE |
WIN874 | WIN874, UNICODE |
Pour activer la conversion automatique de jeux de caract�res, vous devez dire � PostgreSQL quel jeu de caract�res (encodage) vous voulez utiliser c�t� client. Il y'a plusieurs fa�ons de faire cela:
En utilisant la commande \encoding dans psql. \encoding vous permet de changer de jeu de caract�res client � la vol�e. Par exemple, pour changer l'encodage en SJIS, tapez:
\encoding SJIS
En utilisant les fonctions libpq.
\encoding appelle en fait
PQsetClientEncoding()
pour faire son travail.
int PQsetClientEncoding(PGconn *conn, const char *encoding);
ou conn est une connexion au serveur, et encoding est l'encodage que vous voulez utiliser. Si la fonction fixe l'encodage, elle renvoie 0, sinon -1. L'encodage actuel pour cette connexion peut �tre d�termin� en utilisant:
int PQclientEncoding(const PGconn *conn);
Notez que ceci renvoie l'ID d'encodage, pas une cha�ne symbolique tel que EUC_JP. Pour convertir un ID d'encodage en NOM, vous pouvez utiliser:
char *pg_encoding_to_char(int encoding_id);
En utilisant SET client_encoding TO. Fixer l'encodage client peut �tre fait avec cette commande SQL:
SET CLIENT_ENCODING TO 'valeur';
Vous pouvez aussi utiliser la syntaxe SQL plus standard SET NAMES pour ceci:
SET NAMES 'valeur';
Pour demander l'actuel encodage client:
SHOW client_encoding;
Pour revenir � l'encodage par d�faut:
RESET client_encoding;
En utilisant PGCLIENTENCODING. Si la variable d'environnement PGCLIENTENCODING est d�finie dans l'environnement client, cet encodage client est automatiquement s�lectionn� lorsqu'une connexion au serveur est �tablie. (Ceci peut �tre surcharg� avec n'importe quelle autre des m�thodes ci-dessus.)
En utilisant la variable de configuration client_encoding. Si la variable client_encoding dans postgresql.conf est d�finie, cet encodage client est automatiquement s�lectionn� lorsqu'une connexion au serveur est �tablie. (Ceci peut �tre surcharg� avec n'importe quelle autre des m�thodes ci-dessus.)
Si la conversion d'un caract�re particulier n'est pas possible -- supposons que vous avez choisi EUC_JP pour le serveur et LATIN1 pour le client, alors certains caract�res japonais ne pourront pas �tre convertis en LATIN1 -- ils seront transform�s en leur valeur hexad�cimale entre parenth�ses, i.e., (826C).
Ceux-ci sont de bonnes sources pour commencer � ma�triser les diff�rents jeux de caract�res.
Des explications d�taill�es de EUC_JP, EUC_CN, EUC_KR, EUC_TW apparaissent dans la section 3.2.
Le site web du Unicode Consortium
UTF-8 est d�fini ici.
Pr�c�dent | Sommaire | Suivant |
Localisation | Niveau sup�rieur | Planifier les t�ches de maintenance |