Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Meine Frage ist: Wie kann ich die Exception abfangen, falls das encoding der input-Datei falsch angegeben wird? Also wie kann ich erreichen, dass python "merkt", dass das encoding nicht stimmt und dann die entsprechende Exception wirft (und nicht eine andere...)?
Falls was mit dem Encoding nicht stimmt, bekomme ich einfach ein UnicodeDecodeError. Den kann ich natürlich abfangen. Dann habe ich das mit der Eingabe zwar geprüft. Aber wie kann ich noch checken, dass das angegebene Ausgabeformat dann auch alle Zeichen des Eingabetextes darstellen kann? (Also dass es kein "schlechteres" Encoding als das Eingabeencoding ist)?
Dankeschön
Noch zum Encode: Wenn ich ein Text habe, der UTF-8 kodiert ist, ich aber latin-1 eingebe. Dann müsste das Programm eigentlich latin-1 auf utf-8 ändern. Da aber kein EncodeError kommt, wird nichts geändert. Wieso reklamiert python da nicht?
Du meinst wohl einen _Decode_Error. Ohne zu tief in die Encoding-Details zu gehen: Latin1 kann UTF-8 Daten problemlos dekodieren, aber eben nicht zu den urspruenglichen Werten:
Ja, genau das passiert. Und genau das ist der "Fehler", den ich eigentlich abfangen möchte. Ist das also gar nicht möglich?
Oke, jetzt bin ich etwas verwirrt:
Es ist doch ein decode-Fehler, wenn der output-text ein zu "schwaches" encoding hat (also nicht alle Zeichen darstellen kann) und ein encode-Fehler, wenn ein zu schwaches input-encoding angegeben wird. Oder ist es gerade umgekehrt?
Nein das Abfangen ist nicht moeglich. Siehe oben: Fuer den Latin1 Codec sind das sinnvolle Bytewerte, also kein Fehler.
Encode: Unicode -> Bytes
Decode: Bytes -> Unicode
Encode Error koennen nur bei ersterem, Decode nur bei letzterem passieren. Fuer den EncodeError passt deine Sicht noch, fuer den DecodeError musst du sie anpassen: Ein DecodeError tritt dann auf, wenn der Codec ein Bytemuster dekodieren soll, das nicht gueltig ist.
Und das tritt auch dann auf, wenn der Codec eine innere Struktur hat, wie es bei UTF-8 der Fall ist um "seltenere" Zeichen darszustellen.