[Python-de] Umlautproblem in Python 2.3

M.-A. Lemburg mal at lemburg.com
Mon Feb 17 11:09:26 EST 2003


Detlef Lannert wrote:
> Liebe Mitleser/innen,
> 
> ein bißchen sehr spät, ich weiß -- aber ich habe gestern erst
> begriffen, welche Auswirkungen eine "kleine" Änderung hat, die
> mit Python 2.3 wirksam wird: Künftig erzeugt jedes Python-Skript
> eine Warnung, das irgendwo (z.B. Latin-1-)Umlaute enthält (und
> sei es nur in einem Kommentar), wenn nicht in der ersten oder
> zweiten Zeile der Datei der String "coding: Latin-1" (oder der
> Name eines anderen gültigen Kodes) erscheint.

Die Warnung läßt sich leicht abstellen, falls das ein
Problem darstellen sollte. Sie ist hauptsächlich dazu
gedacht, auf das Problem aufmerksam zu machen.

> Obwohl ich schon seit längerer Zeit die CVS-Version von Python
> 2.3 häufig benutze, hat mich dieses Problem noch nicht gebissen,
> weil ich selten deutschsprachige Kommentare verwende.
> 
> Ein Kollege macht jedoch sehr häufig davon Gebrauch und wird
> mit 2.3 alle seine Skripte ändern müssen.

Naja, eine einzige Zeile per Shell-Skript voranzustellen kann doch
nicht so schmerzhaft sein, oder ?

> Ich weiß auch noch
> nicht, wie ich in der nächsten Woche den Teilnehmern meines
> Python-Kurses erklären soll, warum sie entweder auf Umlaute
> verzichten oder den ominösen String "# -*- coding: Latin-1 -*-"
> in jedes Programm tippen sollen.

Man kann auch ruhig eine weniger omiöse Variante
verwenden (die dann allerdings nicht von Emacs erkannt
wird), z.B.

# Dieses Programm verwendet als Encoding: Latin-1

Die in Python verwendete RE ist sehr gnädig :-)

> Kann mir von den Experten hier jemand erklären, warum überhaupt
> der gesamte Quelltext _vor_ der Syntaxanalyse umcodiert werden
> soll? (Sonst wären ja Kommentare syntaktisch zu erkennen und
> könnten ignoriert werden.) Die Python-Quellen selbst durften ja
> schon bisher außerhalb von Strings und Kommentaren nur ASCII pur
> enthalten; wenn das weiterhin so bleibt, würde es doch reichen,
> die Unicode-String-Konstanten aus einer source-spezifischen
> Kodierung in Unicode zu konvertieren. Daß in irgendeiner
> Quellkodierung auch alternative Zeilenwechsel oder Quotes
> enthalten sein könnten, heißt doch nicht, daß man diese auch
> benutzen muß?!

Der gesamte Quelltext wandert durch den Codec, daher sind
auch Kommentare und sonstige Teile des Programms betroffen.

> Sorry, auch nochmaliges Lesen von PEP 263 hat mir keine echte
> Erleuchtung gebracht, und die Diskussion in c.l.py, die ich bei
> Google versucht habe nachzuvollziehen, gibt auch nicht viel her.
> (Die "ASCII-Muttersprachler" tun sich überhaupt schwer damit,
> das Problem zu erkennen.)

Die Autoren des PEPs stammen allerings aus Düsseldorf und
Berlin. Die Problematik ist also sehr wohl bekannt gewesen
und auch der Grund weshalb mit die falsche Auslegung der
Language Spec endlich geklärt werden sollte. Das PEP zeigt
einen Weg heraus aus der Misere.

> 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.

Für solche Fälle kann man die Warnung abstellen (über das
warning Modul). In Python 2.4 ist dann ein SyntaxError
geplant, so daß der obige Fall nicht mehr eintreten
kann ;-)

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Software directly from the Source  (#1, Feb 17 2003)
 >>> Python/Zope Products & Consulting ...         http://www.egenix.com/
 >>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford:                                     43 days left
EuroPython 2003, Charleroi, Belgium:                       127 days left





More information about the Python-de mailing list