From: | Stéphane BUNEL <stephane(at)bpf(dot)st> |
---|---|
To: | David Tokmatchi <david(dot)tokmatchi(at)gmail(dot)com> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Migrer UTF8 vers LATIN1 |
Date: | 2007-08-16 09:34:14 |
Message-ID: | 46C41A16.4080603@bpf.st |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
David Tokmatchi a écrit :
> Bonjour
>
> Une base Postgres a été crée avec l'encodage UTF8. Cette base est mise à
> jour uniquement par des données venant d'une autre base codée en LATIN1.
> Lors d'insertion des caractères accentués j'ai eu des erreurs et à
> l'avenir pour assurer la cohérence des données, je préfère aligner
> l'encodage des deux bases.
> J'ai vu qu'il y la possibilité d'utiliser la commande :*set
> client_encoding = latin1 * avant de lancer les scripts. Sachant que mes
> données de la base sont exclusivement celles de LATIN1 :
Bonjour,
L'encodage des caractères intervient en trois étapes :
char -(1)-> INSERTION -(2)-> POSTGRESQL -(2)-> SELECTION -(3)-> char
Si votre base (PG8 et plus) utilise un encodage internet (2) UTF-8, ce
qui n'est pas une mauvaise idée, elle va s'attendre à recevoir vos
caractères (1) dans ce format d'encodage. De même les caractères
restitués (3) le seront aussi en UTF-8.
Il est possible dynamiquement au niveau du client connecté, _avant_ une
insertion (1) ou une sélection (3) , de spécifier explicitement le jeu
de caractère utilisé via l'ordre : SET CLIENT_ENCODING=iso-8859-15 ; si
votre application le permet. On devine que de cette façon l'encodage
peut même être différent entre (1) et (3).
Statiquement enfin, coté serveur, il est aussi possible d'indiquer quel
est l'encodage par défaut de tout client (fichier postgresql.conf) :
client_encoding = ISO-8859-15
Stéphane BUNEL.
From | Date | Subject | |
---|---|---|---|
Next Message | Laurent ROCHE | 2007-08-17 09:53:16 | Ignorer la casse |
Previous Message | Jean-Christophe Arnu | 2007-08-16 08:29:16 | Re: Migrer UTF8 vers LATIN1 |