LukeSavefrogs / danea-easyfatt

Danea Easyfatt automation suite
https://lukesavefrogs.github.io/danea-easyfatt/
GNU General Public License v3.0
4 stars 0 forks source link

`UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 47752: character maps` #107

Closed LukeSavefrogs closed 1 year ago

LukeSavefrogs commented 1 year ago

Problema

Da stamattina la generazione del CSV ha smesso di funzionare perchè non riesce più a leggere il file:

image

Causa

Il file XML conteneva dei caratteri ( e ) non supportati dall'encoding utilizzato di default su Windows (cioè "Windows-1252", chiamato da Python cp1252).

image

Rimuovendoli il programma tornava a funzionare normalmente.

Soluzione

Workaround

Un modo per ovviare a questo problema e tornare a far funzionare il programma è quello di impostare la variabile di ambiente PYTHONUTF8=1 prima di eseguire lo script:

$Env:PYTHONUTF8=1; & ./easyfatt_integration.exe

Soluzione definitiva

La soluzione definitiva sarebbe usare Path.read_text(encoding='utf8') invece di Path.read_text():

https://github.com/LukeSavefrogs/danea-easyfatt/blob/085161c229ef977d02677175e29dde3a049f9e0d/src/veryeasyfatt/app/main.py#L95-L98

Sarebbe ancora meglio se si usasse un package come charset-normalizer per riconoscere l'encoding utilizzato e usare direttamente quello in fase di lettura del file.

LukeSavefrogs commented 1 year ago

E' possibile specificare il valore della variabile PYTHONUTF8 direttamente in fase di build dell'eseguibile.

L'equivalente CLI di quanto mostrato nell'esempio è --python-option PYTHON_OPTION