[Python-de] Umlautproblem in Python 2.3

Detlef Lannert lannert at uni-duesseldorf.de
Tue Mar 4 13:53:05 EST 2003


Martin v. Löwis <martin at v.loewis.de> wrote:
> > 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.

Mittel- bis langfristig kann das eine Lösung für mich sein, aber
derzeit unterstützt das mein Editor nicht, ebensowenig das
Druckprogramm [a2ps] etc.; notepad wird für dieses Betriebssystem
(wohl auch in Zukunft) nicht angeboten ;-) .

Wie schon gesagt, kann ich bei Kursen mit heterogenem Teilnehmerkreis
nicht eine allgemeingültige Editorempfehlung und -konfiguration
vorgeben. Deswegen bin ich zunächst dazu übergegangen, den Teilnehmern
zu empfehlen, gar keine Umlaute zu verwenden. Was nicht gerade auf
Begeisterung stieß.

Im übrigen taugt diese Empfehlung nicht für Unix-Skripts. Um einen
Interpreter zu starten, muß das Skript mit #! beginnen; wenn dem
eine BOM vorausgeht, wird das Hash-Bang nicht erkannt, sondern (als
Default) die Shell gestartet. Und die meckert über die BOM.
Sicherheitshalber noch mal ausprobiert unter Linux 2.4/SuSE 8.1:

    paco:~ $ file /tmp/test.utf
    /tmp/test.utf: UTF-8 Unicode text
    paco:~ $ /tmp/test.utf
    /tmp/test.utf: line 1: #!: command not found
    /tmp/test.utf: line 3: print: command not found
    paco:~ $

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

Das sind aber nur ganz wenige Kodierungen, die auch bisher ungeeignet
waren, um Python-Source zu schreiben. Mit den ISO-8859-x und KOI*
gibt es AFAIK dieses Problem gar nicht.

  Detlef




More information about the Python-de mailing list