De QTextEdit à une base PostgreSQL : problème d'encodage
Bonjour à tous,
Je produis un plugin pour QGIS, un logiciel de système d'information géographique basé sur Qt, dont les plugins sont écrits en Python.
Depuis que QGIS 1.9 est doté de sa nouvelle API (ce mois-ci), les méthodes ".toString()" ne fonctionnent plus.
J'utilise donc maintenant la méthode ".toPlainText()" pour récupérer les textes de deux QTextEdit (contrôles de texte sur plusieurs lignes), et les intégrer dans 2 champs d'une table PostGreSQL.
Extrait de mon code :
Code:
1 2 3 4
| def sauverInfos(self):
query_save = QtSql.QSqlQuery(self.db)
query = """insert into bdtravaux.sortie (jours_chan, sortcom) values ('{zr_jours_chantier}', '{zr_sort_com}')""".format (zr_jours_chantier=self.ui.jours_chan.toPlainText().encode('UTF-8'),\
zr_sort_com=self.ui.comm.toPlainText().encode('UTF-8')) |
Lorsque je lance cette fonction, les textes saisi par l'utilisateur sont bien intégrés en base. Mais, dans les champs "zr_jours_chantiers" et "zr_sort_com", les caractères accentués sont remplacés par d'autres (exemple : é => é, à => Ã).
J'imagine que cela doit être dû au fait que toPlainText() extrait de mon objet QTextEdit une chaîne de caractère codée en ASCII, que je transforme ensuite en UTF8 avec ".encode('UTF-8')"...
Entre temps, les caractères spéciaux sont donc perdus.
Partagez-vous cette analyse?
Comment transformer mon QTextEdit en chaîne de caractères sans perdre les caractères "spéciaux"?
Enfin, je me demandais pourquoi je n'avais pas ces problèmes d'encodage quand j'utilisais les méthode ".toString()"...
D'avance merci pour toute information sur ce sujet.
Vince
PS : je précise que ma base postgresql est en UTF8, et que j'ai ajouté
# -*- coding: utf-8 -*-
au début de mon module Python.