[Python-de] Umlautproblem in Python 2.3

Martin v. Löwis martin at v.loewis.de
Sun Mar 2 14:00:59 EST 2003


Detlef Lannert <lannert at uni-duesseldorf.de> writes:

> Genauso nützlich wäre es, wenn man für eine Python-Installation
> sagen könnte, daß z.B. ein Encoding von UTF-8 zu unterstellen ist,
> wenn man mal darauf umgestellt hat. Ich finde den Gedanken etwas
> "abstoßend", in jedes Python-Skript auf Dauer eine Extrazeile
> aufzunehmen -- bzw. Neueinsteigern das ans Herz legen zu müssen.

Meine Empfehlung: Verwende einen Editor, der "stillschweigend" Texte
in UTF-8 abspeichert und ein UTF-8-BOM voranstellt (etwa Microsoft
notepad). Dieses ist ebenfalls eine Deklaration der Kodierung, aber
man sieht sie nicht - ich nehme an, dass der Anblick der Deklaration
das ist, was Dich abstößt.

> Erstens muß er alle finden, die auf irgendeinem Rechner ihren
> Dienst tun ;-).  Zweitens denke an Versionsverwaltung und Release-
> Mechanismen; sonst hatte man immer eine Version lang Zeit, ein
> inkompatibles Feature "mutwillig" (from __future__) auszuprobieren.

Hier ist es genauso. Es gibt eine Version Zeit, danach ist es ein
Fehler (und nicht nur eine Warnung), wenn man nicht-ASCII-Bytes in
einer Quelldatei verwendet, aber keine Kodierung deklariert hat.

Falls die Analogie nicht offensichtlich ist: Bei Einführung der
Generatoren wurde "yield" ein Schlüsselwort. Dabei wurde *sofort* eine
Warnung ausgegeben, wenn "yield" als Bezeichner verwendet wurde;
wollte man es als Schlüsselwort verwenden, brauchte man den future
import. Also: In der Transitionsphase gibt es Warnungen, danach
Fehlermeldungen.

> Das ist sicher die einfache Lösung, aber ich habe immer noch leise
> Zweifel, ob das so sein muß.

Wenn man erst parst und dann die Kodierung anwendet, erkennt man
beispielsweise das String-Ende nicht - es gibt Kodierungen (BIG-5),
bei denen das Byte für Backslash (\) auch als zweites Byte auftreten
kann. Wenn ein solches Zeichen unmittelbar vor dem abschließenden "
auftritt, verschluckt sich der Parser.

> > Die Autoren des PEPs stammen allerings aus Düsseldorf und
> > Berlin.
> 
> ... und verwenden wahrscheinlich genausowenig Umlaute in ihren
> Kommentaren wie ich??

Ganz im Gegenteil. Ich habe in vielen Quelldateien eine Zeile, in der

# Martin v. Löwis

steht. In diesen Dateien gibt es jetzt auch eine Deklaration der
Kodierung.

Ciao,
Martin




More information about the Python-de mailing list