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:
\copy (select * from bd_eauxdouces.ds_parametre ) TO 'd:\parametres.csv' CSV
Citation:
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.... :mur: ) 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 :furieux: de 0xce ?
Bref comment débusquer les caractères hexadécimaux ? Je cherche quelque chose du genre:
Code:
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?
[Résolu][9.3] Problème d'encodage UTF-8 --> WIN1252
Citation:
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
Citation:
- 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 !