IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Postgresql utf-8 coté serveur ?


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Il faut juste indiquer côté client un jeu de caractères adéquat pour lire les caractères francophones
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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/

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    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.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    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.

  5. #5
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Je crois que la base peut être créée en LATIN9, tu peux tester (à vérifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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/

  6. #6
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    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,

  7. #7
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Par défaut
    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 Images attachées  

  8. #8
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    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/

  9. #9
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Validation d'un formulaire coté client et/ou coté serveur
    Par antrax2013 dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 12/07/2006, 16h03
  2. Gérer le résultat d'un inputbox coté serveur!
    Par AbyssoS dans le forum ASP
    Réponses: 2
    Dernier message: 13/03/2006, 22h13
  3. [XSL] xsl coté serveur? (asp par exemple)
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/02/2006, 17h37
  4. [Struts 1.2] : validation coté serveur
    Par richard_34b dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/09/2004, 15h42
  5. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo