Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 21/08/2012 17:22:41
- MitsuTomoe
- Membre
Caractères accentués dans psql
Bonjour,
je viens d'installer pg 9.1.5 et j'espérais que l'impossibilité de saisir des caractères accentués dans psql (sous ubuntu 12.04) aurait disparu. Hélas, il n'en est rien.
Ce n'est pas très grave (l'affichage est bon et je peux saisir autrement) mais un peu ennuyeux.
Savez-vous si ce sera corrigé en 9.2 ? Il me semble avoir lu un article disant que ce n'était pas vraiment pg , mais une bibliothèque utilisée
pour pouvoir rappeler les dernières commandes (readline ? readlinen ?) .
Quelqu'un aurait-il des lumières sur cette question ?
Merci
Hors ligne
#2 21/08/2012 19:20:04
- rjuju
- Administrateur
Re : Caractères accentués dans psql
Bonjour,
qu'entendez-vous par impossibilité de saisir des caractères accentués ? faire select 'é' ne fonctionne pas ou sagit-il d'autre chose ?
Votre locale est-elle la même que celle de votre base de donnée ? Je n'ai jamais eu ce problème personnellement.
Dernière modification par rjuju (21/08/2012 19:20:32)
Julien.
https://rjuju.github.io/
Hors ligne
#3 21/08/2012 21:28:36
- MitsuTomoe
- Membre
Re : Caractères accentués dans psql
Exactement . select 'é' ne marche pas, ou update xxx set xx='é'. Dans un fichier sql, pas de souci.
J'avais lu un article là-dessus, mais je n'arrive plus à le retrouver.
Hors ligne
#4 21/08/2012 23:50:00
- dverite
- Membre
Re : Caractères accentués dans psql
La première chose est de vérifier que la locale utilisée dans le terminal est bien compatible avec des accents.
Voir le résultat sous shell avant de lancer psql de la commande:
locale -a
Mais il se peut aussi que l'impossibilité de saisir des accents vienne de ce problème:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608442
Ubuntu utilise les mêmes packages que Debian pour PostgreSQL et subit généralement les mêmes bugs.
En appelant psql comme ça:
LD_PRELOAD=lib/libreadline.so.5 psql [options]
ça doit contourner le problème. Mais en principe c'est déjà fait automatiquement si le package postgresql-common a une version supérieure à 114 (EDIT: et que libreadline est installé)
Pour vérifier, voir le résultat de:
dpkg -l postgresql-common
Dernière modification par dverite (21/08/2012 23:51:16)
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
#5 23/08/2012 00:10:52
- MitsuTomoe
- Membre
Re : Caractères accentués dans psql
C'est bien l'article que j'avais lu.
Voici les résultats des commandes :
locale -a
C
C.UTF-8
en_US.utf8
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8
fr_FR.utf8@euro
POSIX
LD_PRELOAD=lib/libreadline.so.5 psql
ERROR: ld.so: object 'lib/libreadline.so.5' from LD_PRELOAD cannot be preloaded: ignored.
pkg -l postgresql-common
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom Version Description
+++-==================================================-==================================================-====================================================================================================================
ii postgresql-common 129 PostgreSQL database-cluster manager
Après ça , j'ai installé le paquet libreadline-dev et cherché la librairie.
Ca marche en faisant : LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libreadline.so psql
J'ai fait un alias "psqlx=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libreadline.so psql"
Sur le fond du problème, pg doit continuer à utiliser libedit pour une histoire de licence, si j'ai bien compris le rapport de bug ?
Pas de solution plus élégante en vue ?
Hors ligne
#6 23/08/2012 11:25:09
- dverite
- Membre
Re : Caractères accentués dans psql
LD_PRELOAD=lib/libreadline.so.5 psql
ERROR: ld.so: object 'lib/libreadline.so.5' from LD_PRELOAD cannot be preloaded: ignored.
C'est parce qu'il mangue le / initial au début de /lib...
Mais de toute façon, pour le LD_PRELOAD, avec la version 129 de postgresql-common, en principe ça le fait déjà automatiquement.
Il faut simplement que le package libreadline5 soit installé. C'est apparemment la solution la moins inélégante trouvée en attendant que libedit soit assez évolué pour bien gérer les accents.
Par ailleurs les locales installées comprennent à la fois de l'ISO-LATIN et de l'UTF8 en plus de la locale C qui ne gère pas les accents, ce qui est courant pour un système français mais ça oblige à bien vérifier que le terminal est configuré dans la même locale que psql (faire locale tout seul sans -a pour vérifier la locale courante sous le shell, puis show client_encoding sous psql pour voir si c'est compatible).
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Pages : 1