Projet

Général

Profil

Actions

Anomalie #55

fermé

Error python saving in qsp format from an xml format

Ajouté par Andrea Peri il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
06/11/2014
Echéance:
06/11/2014
% réalisé:

100%

Temps estimé:
0.00 h
# ref:

Description

Hi,
After load a xml 19139 metadata , I tried to save it in qsp format.

This give a python error:
I add the xml used for test.

An error has occured while executing Python code:

Traceback (most recent call last):
  File "C:/Users/andrea/.qgis2/python/plugins\qsphere\ui_catalogue.py", line 691, in SaveAsDataQSP
    self.MakeSaveQSP(fileName, False)
  File "C:/Users/andrea/.qgis2/python/plugins\qsphere\ui_catalogue.py", line 706, in MakeSaveQSP
    SaveQSP(self, fileName)
  File "C:/Users/andrea/.qgis2/python/plugins\qsphere\importexport.py", line 110, in SaveQSP
    Config.write(zLOG)
  File "C:\MY-PRO~1\osgeo4w\apps\Python27\lib\ConfigParser.py", line 412, in write
    key = " = ".join((key, str(value).replace('\n', '\n\t')))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 580-581: ordinal not in range(128)

Python version:
2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)]

QGIS version:
2.6.0-Brighton Brighton, exported

Python path: ['C:/MY-PRO~1/osgeo4w/apps/qgis/./python/plugins\\processing', 'C:/MY-PRO~1/osgeo4w/apps/qgis/./python', u'C:/Users/andrea/.qgis2/python', u'C:/Users/andrea/.qgis2/python/plugins', 'C:/MY-PRO~1/osgeo4w/apps/qgis/./python/plugins', 'C:\\MY-PRO~1\\osgeo4w\\bin\\python27.zip', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\DLLs', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\plat-win', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\lib-tk', 'C:\\MY-PRO~1\\osgeo4w\\bin', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\PIL', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\jinja2-2.7.2-py2.7.egg', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\markupsafe-0.23-py2.7-win32.egg', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\python_dateutil-2.2-py2.7.egg', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\pytz-2014.2-py2.7.egg', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\win32', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\six-1.6.1-py2.7.egg', 'C:\\MY-PRO~1\\osgeo4w\\apps\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode', 'C:\\Users\\andrea\\.qgis2\\python\\plugins\\MetaSearch\\ext-libs', '.', 'C:\\MY-PRO~1\\osgeo4w\\apps\\qgis\\python\\plugins\\fTools\\tools']

I'm use qgis 2.6 windows 7 , english interface.


Fichiers

ucs_pc_iso19139.zip (4,31 ko) ucs_pc_iso19139.zip xml used Andrea Peri, 06/11/2014 08:42
ui_catalogue.zip (21,4 ko) ui_catalogue.zip ui_catalogue.py used Andrea Peri, 06/11/2014 08:46
capture_err47_err55.png (282 ko) capture_err47_err55.png Christophe MASSE, 06/11/2014 19:43
capture_encodage.png (245 ko) capture_encodage.png Christophe MASSE, 06/11/2014 20:20
qsphere_2.6.1.zip (3,37 Mo) qsphere_2.6.1.zip Christophe MASSE, 07/11/2014 08:13

Mis à jour par Andrea Peri il y a plus de 9 ans

I forget to say, i'm using the qsphere 2.6.1 with a patch in ui interface from Christophe.

Mis à jour par Andrea Peri il y a plus de 9 ans

I add the file patchd before.

Mis à jour par Christophe MASSE il y a plus de 9 ans

L'erreur n'est pas dans QSphere mais dans le fichier "ConfigParser.py".
Sur mon poste, erreur non reproduite sur le fichier XML joint (cf. capture jointe).
Le problème des caractères provient là-encore de la fonction "str", qui n'est plus présente dans les modules Python (cf. #47)
key = " = ".join((key, str(value).replace('\n', '\n\t')))

Je note aussi par ailleurs que le répertoire d'installation comporte une racine "C:\MY-PRO~1\osgeo4w" (environnement Windows ? Version non distribuée packagée par la communauté mais version via osgeo4w installer). Certaines librairies peuvent être absentes ou non actualisées (d'où les erreurs sur la fonction str).

Dans tous les cas pas de corrections possibles sur une ressource de la distribution QGIS.

Solution alternative ? Utiliser une autre classe que ConfigParser ? Risque d'y trouver également des appels à la fonction "str".

Mis à jour par Christophe MASSE il y a plus de 9 ans

Même si l'erreur dans le ConfigParser semble connue dans la version 2.7 de Python et corrigée dans les versions suivantes, et ne souhaitant pas modifier le code d'un module externe à QSphere, soupçonnant le contenu du champ Généalogie récupéré la source du problème d'encodage, j'ai placé une tentative d'encodage forcé en UTF-8 sur les contrôles de type QTextEdit de QSphere :

zObj.setPlainText(zText.encode(encoding='UTF-8',errors='strict'))

Sans garantie d'un meilleur comportement ...
Sur mon poste, le résultat est quelque différent de celui obtenu sans ce sur-encoadge (cf. capture_encodage)
A tester ...

Le module comportant la correction est joint.

Mis à jour par Christophe MASSE il y a plus de 9 ans

La solution du surencodage ne peut-être retenue, car elle dégrade le contenu sémantique originel du fichier XML.
Recherche en cours sur ce qu'il serait possible d'apporter comme correction en amont du Config.write .

Mis à jour par Christophe MASSE il y a plus de 9 ans

  • Fichier ui_catalogue.py supprimé

Mis à jour par Christophe MASSE il y a plus de 9 ans

J'ajoute l'archive du 7 novembre 2014 de QSphere (version de travail 2.6.1).
Merci à Andrea de regarder si le problème de sauvegarde du projet QGS persiste ...
Je tiens à vérifier si les deux lignes de code suivantes :

reload(sys)
sys.setdefaultencoding('iso-8859-1')

placées dans le ClassFactory (module qsphere.py) influent sur le comportement de la fonction str.
J'ai déjà remarqué sur d'autres développements que les "contextes" portées par d'autres extensions pouvaient influencer sur les extensions voisines et masquer certaines erreurs potentielles.

Mis à jour par Christophe MASSE il y a plus de 9 ans

  • % réalisé changé de 100 à 70

Mis à jour par Christophe MASSE il y a plus de 9 ans

  • Statut changé de En cours à Fermé
  • % réalisé changé de 70 à 100

Tests réalisés sous LINUX corrects.

Mis à jour par Andrea Peri il y a plus de 9 ans

Hi, sorry for late.
:)

I test the 2.6.1 attach to this ticket.

it saved correctly on windows 7 64bit.

Actions

Formats disponibles : Atom PDF