Seite 1 von 1
UnicodeDecodeError by py2exe.
Verfasst: Samstag 10. November 2012, 14:43
von zianou
Hallo,
ich habe ein kleine Tool mit wxpython entwickelt und es funktioniert fehlerfrei. Ich habe den Script mit py2exe konvertiert und beim Starten des exe ist folgende Fehler aufgetaucht:
Code: Alles auswählen
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 7219: ordinal not in range(128)
der Zeil bei dem das Problem auftaucht sieht so aus:
Code: Alles auswählen
line_no_12 = [Lines.index(x) for x in Lines if ('<PORT format-rev="1" id="' + BUS_LIST[0] + '"' + ' toolId="VECTOR-HW01" xsi:type="port">') in x][0] + 1
BUS_LIST ist eine Liste von Strings.
kann man das irgendwie lösen?
Re: UnicodeDecodeError by py2exe.
Verfasst: Samstag 10. November 2012, 15:02
von EyDu
Hallo,
ich würde erstmal die ganze XML-Verarbeitung richtig programmieren. Was du da, basierend auf einfachen Textoperationen, gebaut hast, steht auf extrem wackeligen Beinen. Extrem fehleranfällig, nicht flexibel oder erweiterbar, kaum wartbar und bei den kleinsten Änderungen wird dir alles zusammenbrechen. Falls zum Beispiel mal Daten in anderer Codierung vorliegen als du erwartest. Verwende besser gleich lxml und oder setze auf XPath. Weniger Code, robust, weniger Fehler, wartbar und leicht anpassbar. Also nur Vorteile gegenüber deinem Code. Erst dann solltest du dich um Codierungsfehler in der XML-Verarbeitung kümmern, falls es die dann überhaupt noch gibt.
Re: UnicodeDecodeError by py2exe.
Verfasst: Samstag 10. November 2012, 15:36
von zianou
@Eydu: ich benutze eigentlich xml.dom als XML-Parser. der Zeil war nur optional in meinem Code. Aber jetzt habe ich das Problem gelöst, in dem ich die Zeile zu UTF-8 decodiere und zu Latin-1 encodiere.
das hat mindestens bei mir jetzt funktioniert.
Re: UnicodeDecodeError by py2exe.
Verfasst: Samstag 10. November 2012, 15:48
von EyDu
Das macht den Code jetzt nicht unbedingt vertrauenswürdiger. Deine Lösung besteht darin, dass du einfach noch mehr Annahmen über die vorliegenden Daten triffst. Das muss in deinem Szenario nicht unbedingt falsch sein (ich weiß ja nicht, wo die Daten herkommen), aber eine saubere Lösung ist das nicht.
Re: UnicodeDecodeError by py2exe.
Verfasst: Samstag 10. November 2012, 16:09
von zianou
@Eydu: da bin ich voll deine Meinung, deswegen werde ich versuchen eine andere Lösung zu finden. Danke.
P.S: um keine Probleme mit deutsche Umlaute zu bekommen, muss man hier statt "UTF-8" "iso-8859-1" benutzen.
Viele Grüße