Georg Mischler <schorsch@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 _______________________________________________ Python-de maillist - Python-de@starship.python.net http://starship.python.net/mailman/listinfo/python-de