Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Mon travail se déroule en trois phases.
1. Je developpe et teste des requêtes SQL avec SqlDBX sous Windows.
2. Une tache cron éxécute ces requêtes SQL nuitamment utilisant des batches dans psql.
3. Ces batches créent des tables qui sont visualisables par mes collègues via des TCD dans Excel via ODBC.
Mais j'ai des messages d'erreur avec ce genre de requête :
CASE WHEN ... THEN 'Déséquilibré'
ELSE 'Equilibré' END AS Equilibre
Les lettres accentués posent problème.
Sous Windows avec SqlDBX 3.5.1 :
ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe92720;
Error while executing the query
Et avec psql :
ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe92720
Dans Excel, pas d'erreur d'accents, puisque la table de résultats n'est pas créée.
Comment faire pour que les lettres accentués français s'enregistrent et se voient correctement ?
1. dans mon requetteur client (SqlDBX) sous Windows et
2. dans psql et
3. dans Excel.
Merci d'avance pour toute aide.
BM
--------------------
pgsama=# \l
Liste des bases de données
Nom | Propriétaire | Encodage | Tri | Type caract. | Droits d'accès
-----------+--------------+----------+------------+--------------+-----------------------
pgsama | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 |
postgres | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 |
template0 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | fr_FR.utf8 | fr_FR.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 lignes)
--------------------
Utilisant
Ubuntu 11.04 French
psql 9.0.3
SqlDBX 3.5.1
Win7 Pro French
Dernière modification par butin-matou (20/09/2011 12:44:14)
Hors ligne
Il faut les saisir en UTF8, ce que ne semble pas faire votre outil.
Guillaume.
Hors ligne
Il faut en réalité que le paramétrage client_encoding soit réglé à la bonne valeur, c'est à dire qu'il doit correspondre à l'encodage utilisé par l'application. Chaque application peut le régler différemment si nécessaire.
http://docs.postgresqlfr.org/9.0/runtim … t-encoding
http://docs.postgresqlfr.org/9.0/multibyte.html section 22.2.3
La valeur par défaut du client_encoding est l'encodage de la base de données, ici UTF-8, d'où vos messages d'erreur.
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
Hors ligne
En fait, avec les drivers odbc, on spécifie l'encoding au moment de la création du dsn, de mémoire (il y a un driver odbc 'ansi' et un 'unicode'). Ça ne pourrait pas tout simplement venir du choix du mauvais, par rapport à l'application utilisant les données ? (l'unicode de windows, par défaut, c'est de l'utf16 little endian…)
Marc.
Hors ligne
Bonne mémoire, il y a bien ces deux drivers. Par contre, je ne suis pas sûr que l'ansi soit toujours proposé.
Guillaume.
Hors ligne
Bonjour,
Problème résolu.
J'ai redémarré le serveur Postgres
pour recharger la config que j'avais avant le problème (et
avant mes tentatives de correction). Mais le problème persistait.
Je savais au moins que le problème n'était probalement pas du coté serveur.
J'ai vu que les seuls tableaux Excel qui posaient problème
étaient ceux qui utilisaient des champs-contenant-des-accents
définies en dur dans les scripts SQL.
(Surtout des CASE WHEN ...)
Les tableaux qui lisaient directement des champs-de-la-base-contenant-des-accents
s'affichaient correctement.
En creusant, j'ai découvert que mon Notepad++
que j'utilise parfois pour modifier des scripts était règlé,
pour l'encodage, sur "Encoder en ASCII" .
J'ai modifié le paramètre en "Convertir en ASCII", et re-sauvegardé et relancé le script.
Les messages d'erreur ont disparu et l'affichage dans Excel est devenu normal, parfait.
Merci pour toutes vos suggestions.
BM
Dernière modification par butin-matou (23/09/2011 09:50:12)
Hors ligne
Pages : 1