Python Xml.ElementTree - UnicodeDecodeError:

Creare una macro - Scrivere uno script - Usare le API
Rispondi
nickGiard
Messaggi: 65
Iscritto il: lunedì 14 maggio 2012, 22:04

Python Xml.ElementTree - UnicodeDecodeError:

Messaggio 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
Nicola con LibreOffice 7.1 (x64) su Windows 11
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Python Xml.ElementTree - UnicodeDecodeError:

Messaggio 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
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi