[Python-de] Umlautproblem in Python 2.3

Detlef Lannert lannert at uni-duesseldorf.de
Fri Feb 14 19:30:27 EST 2003


Georg Mischler <schorsch at schorsch.com> wrote:
> Tatsaechlich darf eine Python-Quelle nach Spezifikation bis
> und mit 2.2 ausschliesslich ASCII enthalten, egal ob innerhalb
> oder ausserhalb von String-Literals und Kommentaren.  Der Parser
> war bisher so zwar freundlich (oder nachlaessig), Abweichendes
> trotzdem zu schlucken, dieses Verhalten ist aber als Bug zu
> klassifizieren, welcher mit 2.3 nun behoben wird.

So einfach ist es leider nicht. Zitat aus dem Python Reference
Manual, Release 2.3a0, noch vom Mai 2002: 

    8-bit characters may be used in string literals and comments
    but their interpretation is platform dependent; the proper
    way to insert 8-bit characters in string literals is by
    using octal or hexadecimal escape sequences.

Die 8-Bit-Zeichen sind danach in Kommentaren zulässig, es ist nur
keine Plattformunabhängigkeit gegeben. Und nur für String-Literale
wird die Benutzung von Escape-Folgen empfohlen.

Die an gleicher Stelle zu findende "Future compatibility note"
sagt noch einmal (etwas verklausuliert), daß man sich auf eine
Interpretation mit Latin-1 (in Strings) nicht verlassen solle.

> Es hat ja
> ohnehin nur fuer diejenigen (vorwiegend westlichen) Sprachen
> "funktioniert", welche alle ihre Zeichen in 8 Bits unterbringen
> koennen.

Naja, immerhin. Die Programmierer im fernen Osten haben
wahrscheinlich ihre lokalen Schriftzeichen ohnehin nur in Unicode-
Strings untergebracht (seit es letztere gibt).

> Bei Zeichensaetzen mit Multibyte-Codierung kann durchaus mal
> ein '\n' oder sonst etwas Unangenehmes als Teil eines 2-Byte
> Zeichens auch in der Mitte der Zeile vorkommen. Ohne
> Zeichensatz-Deklaration hat der Parser aber nicht die
> geringste Chance, den Unterschied zu erkennen.

OK, jetzt verstehe ich das Problem. Aber dann würde es genügen, für
Multibyte-Codierungen eine Code-Deklaration zu verlangen, die ja
bisher nicht verwendbar waren. UTF-8 macht freilich keine
Schwierigkeiten, weil kein ASCII-Zeichen als Folgebyte auftreten
kann.

> > Dies soll keine rhetorische (sprich trollige) Frage sein; ich
> > sehe im 2.3-Verhalten von Python aber sogar ein potentielles
> > Sicherheitsproblem, weil in den (lästigen!) Warnungsmeldungen
> > die erste Zeile auftaucht, die Umlaute o.ä. hat. Wenn sie
> > Paßwörter oder abfällige Bemerkungen enthält -- was bisher in
> > einigen Einsatzfällen unkritisch war --, hat der Autor Ärger
> > am Hals.
> 
> Der Aerger ist in solchen Faellen wohl redlich verdient. ;)

Das sehe ich nun wirklich nicht. Muß er tatsächlich damit rechnen,
daß sein Programm zwar noch richtig läuft, aber Quelltextstücke
angezeigt werden? Das wird dann eher noch ein Thema für Bugtraq ...

  Detlef




More information about the Python-de mailing list