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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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,

+ 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