Pagina 1 di 1

Python Xml.ElementTree - UnicodeDecodeError:

Inviato: sabato 23 giugno 2018, 18:27
da nickGiard
Buongiorno a tutti
Per chi usa Python installato su Libre Office, avviso di uno spiacevole bug che avviene quando utilizziamo il modulo xml\etree\ElementTree.py.
Se abbiamo un file xml con elementi che hanno attributi con molti caratteri, es 6.000 quali la descrizione di una Voce che contiene inoltre caratteri accentati etc., può capitare che si presenti questo errore :
File "C:\Users\Nicola\AppData\Roaming\LibreOffice\4\user\Scripts\python\MyPyFunct.py", line 1114, in _listVociDictToComputoXmlSave
etVoci = ET.XML(sDoc)
File "C:\Program Files\LibreOffice 5\program\python-core-3.5.0\lib\xml\etree\ElementTree.py", line 1344, in XML
parser.feed(text)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 2047: invalid continuation byte
Ho visto in internet che questo è un baco di alcune versioni di xml\etree\ElementTree.py , sfortunatamente inserite nelle distribuzioni di Libre Office.
Chiedo a chi ha contatti con gli sviluppatori di segnalare questo problema.
Mi sembra di aver capito che il buffer del parser xml XMLParser legga a blocchi il file binario xml codificato in UTF-8, e come sappiamo alcuni caratteri hanno più di un byte, per cui se il carattere si trova alla fine del buffer e viene tagliato, si crea l'errore che vediamo.

Per cercare una soluzione provvisoria, nel mio caso il file xml viene generato leggendo le celle di calc, entro nella cella ed aggiungo degli spazi, nella speranza che il buffer non tagli il carattere finale.
Chiedo qualche suggerimento alternativo, se disponibile.
Un cordiale saluto, sperando di essere stato utile per risparmiare ad altri la giornata di lavoro che ho impiegato per capire l'inghippo. :P :P
Nick

Re: Python Xml.ElementTree - UnicodeDecodeError:

Inviato: domenica 24 giugno 2018, 7:23
da charlie
nickGiard ha scritto:Chiedo a chi ha contatti con gli sviluppatori di segnalare questo problema.
I bug vanno segnalati qui https://bugs.documentfoundation.org