[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