Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2005, 18h01   #1
Membre du Club
 
Inscription : mai 2002
Messages : 93
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 93
Points : 49
Points : 49
Envoyer un message via MSN à localhost Envoyer un message via Yahoo à localhost Envoyer un message via Skype™ à localhost
Par défaut accents et langue arabe et chinoise

Bonjour,
J'ai une table qui devrait recevoir des enregistrements avec différentes langues que l'anglais et j'ai toujours des problémes de charset à chaque fois que je fais une insertion (voir un select aussi) :

Langue francaise : toujours des problémes d'accent
Langue arabe et chinoise : ahh ca c'est le *****

comment configurer postgresql pour que ca fonctionne avec ces langues ,
localhost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2005, 18h44   #2
Membre éclairé
 
Inscription : janvier 2005
Messages : 336
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2005
Messages : 336
Points : 353
Points : 353
il faut que ta base soit en unicode, c'est la seule façon de gérér une multitude de langue

KrysKool
kryskool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2005, 00h13   #3
Expert Confirmé Sénior
 
Homme Mathias Gaunard
Ingénieur développement logiciels
Inscription : décembre 2003
Messages : 3 543
Détails du profil
Informations personnelles :
Nom : Homme Mathias Gaunard
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2003
Messages : 3 543
Points : 4 408
Points : 4 408
Il faut spécifier le charset de la connexion à l'aide de SET NAMES.
Pour l'arabe par exemple
Code :
SET NAMES 'ISO_8859_6';
ou
ou
selon le charset choisi.

(Je conseille UNICODE (utf-8)).

Bien entendu, il faut mieux que la base soit aussi déclarée dans cet encodage. Si ce n'est pas le cas, pgsql effectuera une conversion.

Plus d'info sur la doc.
loufoque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2005, 10h02   #4
Membre du Club
 
Inscription : mai 2002
Messages : 93
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 93
Points : 49
Points : 49
Envoyer un message via MSN à localhost Envoyer un message via Yahoo à localhost Envoyer un message via Skype™ à localhost
J'ai trouvé une solution qui est peut être la meilleur (?)
je vous expose l'etat de ma base :
Citation:
eserve=> \l
Liste des bases de données
Nom | Propriétaire | Encodage
-----------+--------------+----------
eserve | postgres | UNICODE
donc ma base est en unicode, cependant lorsque j'importe un dump qui contient des accents ca ne s'accepte pas...
alors j'ai entouré le dump par ces deux lignes :

Code :
1
2
3
SET CLIENT_ENCODING TO 'value';
...dump...
RESET client_encoding;
et dans value j'ai mis : WIN1256
ce qui est l'encodage pour l'arabe et j'ai eu mes accents dans ma table et evidemen si y'a eu des entrées en arabe ca passera, en résumé j'ai vu que WIN1256 est l'encodage qui va accepter les caractéres accentués, arabe et (peut etre) chinois...
corrigez moi si je me trompe
localhost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2005, 13h49   #5
Expert Confirmé Sénior
 
Homme Mathias Gaunard
Ingénieur développement logiciels
Inscription : décembre 2003
Messages : 3 543
Détails du profil
Informations personnelles :
Nom : Homme Mathias Gaunard
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : décembre 2003
Messages : 3 543
Points : 4 408
Points : 4 408
Citation:
ce qui est l'encodage pour l'arabe
Ok en fait tu ne sais pas ce qu'est un charset ?
Tu peux écrire en arabe dans plusieurs encodages, que j'ai d'ailleurs précisés (ISO_8859_6, WIN1256 et UNICODE - y'en a d'autres, mais ce sont les seuls supportés par postgresql)
Un charset définit une correspondance entre des nombres et des caractères, le tout codé généralement sur 8 bits (à part unicode et les trucs asiatiques qui sont sur plusieurs octets), car les données informatiques ne sont en fait que des nombres.

Citation:
j'ai vu que WIN1256 est l'encodage qui va accepter les caractéres accentués, arabe et (peut etre) chinois...
corrigez moi si je me trompe
Tu te trompes, c'est un charset arabe. Il est compatible ASCII mais à part ça il ne contient rien d'autre que les caractères arabes (donc y'a même pas les accents)
Le seul encodage qui accepte tout (français, arabe, chinois) est unicode.

Il faut donc que tu normalises tes données d'entrée, afin qu'elles soient toutes encodées de la même façon.
loufoque est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h53.


 
 
 
 
Partenaires

Hébergement Web