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 10 months 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