Zum Inhalt

Python3, sys.stdin und encoding-Mischmasch

Wer in python2 bereits folgendes Konstrukt verwendete, brauchte sich über Encodings (Zeichenkodierung)  keine Gedanken zu machen:

Leider funktioniert dieses Konstrukt in python3 nicht mehr. Bei verschiedenen Encodings (bzw. kein UTF-8) erhält man folgende Exception:

Kommen Zeichen in der Eingabe vor, die nicht mit UTF-8 kodiert sind, so kann man entweder mit einem try… except-Konstrukt diese Zeile ignorieren oder – besser – die Eingabedatei als Bytesequenz einlesen:

Nun erhält man Bytesequenzen (Typ: bytes), in dem alle nicht-ASCII-Zeichen escaped sind. Möchte man stattdessen normale Strings haben, geht man so vor:

Und so weiter, für jeden erdenklichen Zeichensatz. Möchte man auf Teufel-komm-raus den richtigen Zeichensatz erhaschen, baut man sich am besten eine Schleife mit einer Liste von Zeichensätzen.

So kommt man aber zumindest zu dem Ergebnis, dass man ein funktionierendes Programm behält und ungewöhnliche Zeichensätze ignoriert werden.

Published inProgrammieren

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.