Re: Migrer UTF8 vers LATIN1

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.

In response to

Browse pgsql-fr-generale by date

  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