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 08/09/2008, 14h19   #1
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
Par défaut Postgresql utf-8 coté serveur ?

Bonjour,

je ne suis pas développeur, juste cartographe, mais j'ai vu sur le forum qu'on pouvait changer l'encodage du client postgres.

je l'ai installé en choisissant comme encodage pour mon serveur local (localhost) WIN1252 et quand j'essaye de faire un 'insert from csv' :

Code :
1
2
3
COPY convention (num_convention, objet, date_convention,co_contractant) 
FROM 'C:/conv.csv'
WITH delimiter AS ';' CSV header;
il me renvoie l'erreur suivante :

ERROR: invalid byte sequence for encoding "UTF8": 0xe97461
État SQL :22021
Astuce : This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
Contexte : COPY convention, line 2


je suppose que ça vient de l'encodage de mon serveur car j'ai fait :

Code :
SET CLIENT_ENCODING TO 'UTF-8';
et ma requête ne fonctionne toujours pas, c'est le même message d'erreur.

est-ce qu'on peut changer l'encodage du serveur après coup ou est-ce définitif après l'installation ?

est-ce que quelqu'un connait ça?
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2008, 16h21   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Il faut juste indiquer côté client un jeu de caractères adéquat pour lire les caractères francophones
Essaie
Code :
SET CLIENT_ENCODING TO 'LATIN9';
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2008, 16h32   #3
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
Par défaut latin9

Bonjour SCHEU,

merci, ça marche,

j'avais vu ça sur un autre forum (c'était toi qui répondait d'ailleurs), mais je ne l'ai pas testé car je pensais qu'utf-8 prenait en compte tous les caractères?

alors pourquoi mettre utf8, si je dois ensuite mettre en latin9 ?

penses-tu que si lors de l'installation de postgres, je met utf-8 coté client et utf-8 coté serveur, le problème ne se pose pas ???

merci quand même et à bientôt.
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2008, 16h42   #4
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
Par défaut latin9 ...suite

Bonjour,

j'ai essayé de fermer et réouvrir pgadmin et j'ai fait

il me sort "unicode", ce qui veut dire que j'ai toujours de l'utf-8 par défaut dans ma base.

il faudra donc qu'à chaque "insert from csv" je mette "SET client_encoding to 'latin9'", ce qui je crois correspond à un "réencodage" à la volée ?

ça ne me gène pas trop, mais pour des utilisateurs encore moins avertis que moi, ne vaut-il mieux pas que tout soit en utf-8 ou en latin9 mais en dure ?

peut-on changer l'encodage de façon durable ??

merci encore.
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2008, 17h52   #5
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Je crois que la base peut être créée en LATIN9, tu peux tester (à vérifier)
Code :
CREATE DATABASE ... ENCODING = 'LATIN9';
--> essaie donc de recréer une base vide en LATIN9 et de faire un export/import (pg_dump) de tes données

Sinon tu peux peut-être éviter de remettre la commande à chaque connexion ou script en modifiant le paramètre client_encoding à 'LATIN9' dans le fichier postgresql.conf de ton répertoire d'installation, puis de recharger la conf (pg_ctl reload) ou de redémarrer le cluster de base de donnée.

--> A tester également je ne suis pas sûr de mon coup là
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 10h06   #6
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
Par défaut latin9

Bonjour Scheu.

merci pour toutes ces infos, je n'ai pas encore tout essayé, mais je le ferais sans doute en fin de semaine. je n'ai pas trop le temps en ce moment.

j'ai quand même regardé dans le fichier postgresql.conf, à ma grande surprise, il y avait écris "sql_ascii" alors que je pensais bien avoir mis "utf-8". de plus, quand je faisait "show client_encoding;" il me disait 'unicode'.
j'ai quand même remplacé "sql_ascii" par "utf-8" et j'ai recharger la conf.
j'ai relancé pgadmin et j'ai fait "show client_encoding;" il me dit toujours 'unicode'. cependant je n'ai pas essayé d'intégrer mes données csv après ça.

je pense que je te répondrais la semaine prochaine après avoir créé une nouvelle base en latin9.

merci encore et à bientôt.

cordialement,
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2008, 19h26   #7
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
Bonsoir,

Comme promis une réponse mais un peu tard.

j'ai mis 'LATIN9' dans le ficher postgresql.conf et j'ai rechargé la configuration mais rien ne change. par contre je ne sais pas redémarrer le cluster de données


quoi qu'il en soit, j'ai essayé de créer une nouvelle base de données en LATIN9 dans PGAdmin, mais il y a le message d'erreur suivant qui apparait.



c'est au moment de l'install, lorsque l'on choisis l'encodage du serveur :



peut-on changer cela après avoir fini l'installation de postgres ??? et si je mete UTF-8 à la place win1252 est-ce que cela règlera le problème ?

peut-être suis-je optimiste.

merci quand même et à bientôt.

cordialement,

nicolas
Images attachées
Type de fichier : gif server_encoding.gif (4,5 Ko, 46 affichages)
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 10h41   #8
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
C'est peut-être le serveur qui n'accepte pas ce jeu de caractères, mais là j'en sais rien
Une solution simple consiste à créer la base en UTF8 et à mettre le paramètre client_encoding à LATIN9, comme ça plus besoin de remettre "set client_encoding to 'LATIN9' dans chaque script
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 12h11   #9
Nouveau Membre du Club
 
Inscription : septembre 2008
Messages : 68
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 68
Points : 26
Points : 26
ok,

je vais faire comme ça, c'est une bonne solution pour moi.

je vous tiens au courant si je trouve une solution.

merci encore.

cordialement,

nicolas.
nponzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h15.


 
 
 
 
Partenaires

Hébergement Web