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

Requêtes PostgreSQL Discussion :

Problème d'encodage UTF-8 --> WIN1252 [9.3]


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2014
    Messages : 41
    Par défaut Problème d'encodage UTF-8 --> WIN1252
    Bonjour à tous,

    Une base de données a été créée afin de partager des infos sur un serveur postgresql. Afin d'en simplifier l'exploitation (et de parer aux demandes en attendant d'avoir un interfaçage), nous avons installé des connecteurs ODBC sur les différents postes et un accès par Access. (là n'est pas le débat, svp...)
    Nous rencontrons beaucoup d'erreurs du type "La connection ODBC a échoué" depuis Access sans plus d'information.
    A force de chercher, j'ai fini par comprendre: il s’agirait d'encodage de caractères au niveau des tables faisant office de dictionnaires de données.

    Les dictionnaires de données sont fournis et imposés au niveau national. Nous les récupérons au format csv/WIN1252, les convertissons et intégrons en dbf/UTF-8.

    Sauf que lorsque je tente une extraction sur psql, j'ai le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \copy (select * from bd_eauxdouces.ds_parametre ) TO 'd:\parametres.csv' CSV
    ERREUR: le caractère dont la séquence d'octets est 0xce 0xbb dans l'encodage "UTF-8" n'a pas d'équivalent dans l'encodage "WIN1252"
    En fouillant encore un peu plus (par colonne et par lots d'identifiants... ouais, c'est un peu.... ) et en corrigeant à la main, j'arrive à faire sauter certaines erreurs... Et d'autres apparaissent quand je fais un export global d'une table.

    Je suis prête à me fader un script de requêtes pour tester et corriger tous les champs de toutes les tables nécessaires.
    Sauf que je ne sais pas comment lui dire de me remplacer le caractère 0xbb par " ? ou de me trouver tous les enregistrements avec ce de 0xce ?
    Bref comment débusquer les caractères hexadécimaux ? Je cherche quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from bd_eauxdouces.ds_parametre where position(lblongparametre, '\xbb') <> 0 ;
    Ai-je un moyen de me prévaloir de ces erreurs afin de ne plus avoir d'échec ODBC?

  2. #2
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Une piste avec utf8_to_windows_1252.
    Vous avez aussi la possibilité de choisir un encodage de sortie avec l'option ENCODING de la commande COPY.
    Pour ACCESS et la connexion ODBC, il faut préciser la version de ACCESS et le pilote ODBC. Pour avoir plus d'info sur les erreurs il faut voir le journal d'erreurs dans DOSSIER_DATA_DE_POSTGRES\pg_log
    @+

  3. #3
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2014
    Messages : 41
    Par défaut [Résolu][9.3] Problème d'encodage UTF-8 --> WIN1252
    et le pilote ODBC
    Ha haaaa! Ca m'a mis la puce à l'oreille.
    J'avais appliqué un tutoriel disant qu'il fallait se connecter avec le pilote postgreSql "ANSI".
    Hors, en fouinant, j'ai pu lire sur le web ceci
    • PostgreSQL Unicode: use this if your database was set up with the UTF-8 character set.
    • PostgreSQL ANSI: use this if your database was set up with a LATIN character set.
    Comme je suis dns le cas d'une BD encodée en UTF-8, je suis dans le cas d'un driver en UNICODE.
    Les 2-3 tests réalisés depuis ne posent plus de bugs.

    Donc a priori, c'est résolu!
    Merci alassanediakite !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Choisir un encodage UTF8 pour une base de données est la pire des imbécilités. En effet UTF8 est destiné à faire de la compression de données à la volée afin de réduire la volumétrie des flux HTPP des serveurs web !
    Or les stratégies de stockage et d'indexation des bases de données s'opposent frontalement à l'utilisation de la compression UTF8 dans les recherches, les jointures, les opérations de tri et de groupage...
    Certains SGBDR ont donné dans cette stupidité ce qui n'est pas sans conséquence.
    Le meilleur conseil que je puisse vous donner et de reprendre votre base avec un encodage plus traditionnel et puis faire pisser à votre SGBDR en sortie (et uniquement en sortie- dans le DataSet) de l'UTF8 !
    D'ailleurs le stockage de l'UTF 8 dans les SGBDR relèves quelques croustillante surprises !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2014
    Messages : 41
    Par défaut
    La sentence est sans concession et je n'épiloguerai pas ici. Le serveur à pour vocation à avoir un interfaçage web.
    J'en prend note et parlerai au prestataire d'infogérance de sa "pire des imbécilité".
    Merci pour l'info et le conseil.

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

Discussions similaires

  1. [FPDF] Encodage UTF-8
    Par navis84 dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 08/09/2018, 12h43
  2. problème d' encodage utf-8 (je pense en tout cas)
    Par reventlov dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/05/2008, 19h47
  3. [DOM] Problème d'encodage UTF-8
    Par Valter dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/05/2008, 15h32
  4. Problème d'encodage UTF-8
    Par Shugo78 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 23/11/2007, 19h40
  5. [MySQL] Problème d'encodage UTF-8
    Par cloridriks dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/10/2007, 11h19

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