[mailinglist] Re: [Python-de] htmllib und Umlaute

Martin v. Löwis martin at v.loewis.de
Sun Apr 27 03:29:31 EDT 2003


Klaus Meyer <km-news1 at onlinehome.de> writes:

> >>> unicode("dö", "cp437")
> UnicodeError: ASCII encoding error: ordinal not in range(128)
> (Python 2.2.2, Win2k)

Das liegt daran, dass man in IDLE keine Umlaute eingeben kann.  Ich
empfehle, stets die Hexadezimalversion in String-Literalen zu
verwenden, also \xRS.

> Irgendwie fehlt mir der rote Faden. Gibt es ein empfehlenswerte
> Einführung? Unicode macht mir auch immer Probleme.

http://www.jorendorff.com/articles/unicode/python.html
http://www.reportlab.com/i18n/python_unicode_tutorial.html
http://www.python.org/peps/pep-0100.html


> Sehe ich folgendes bisher richtig:
> 
> Python unterstützt für Strings nur noch 7-Bit, alle Zeichen über 127
> müssen Unicode sein?

Falsch. Python-Byte-Strings enthalten Bytes im Bereich 0..255. Welche
Zeichen diese Bytes bedeuten hängt von der verwendeten Kodierung ab
(Latin-1, CP437, ASCII, UTF-8).

> Also sobald ich ein Umlaut habe, brauche ich Unicode?

Falsch. Du kannst einen Umlaut auch mit Bytestrings kodieren -
allerdings gibt es mindestens 4 verschiedene Repräsentationen für
o-umlaut (Latin-1=CP1252, CP437, CP850, UTF-8, MacRoman, ...)

> Wie verhalten sich die vielen in Python vorhanden Fkt/Module etc., die
> irgendwo Strings erwarten?

Die verhalten sich alle richtig... Was genau bedeutet die Frage?

> Gibt es noch eine Mvglichkeit, zu 8 Bit-Strings zu kommen, die ganz
> ohne Unicode (wie früher, sag ich mal :-) mit Umlauten umgehen können?

Klar. Du musst Dich bloss entscheiden, welche Kodierung Du verwenden
willst.

Wenn Du Dich beispielsweise für CP850 entscheidest, wirst Du mit
HTML-Files Schwierigkeiten bekommen, die iso-8859-1 verwenden;
verwendest Du iso-8859-1, bekommst Du mit der Windows-Konsole
Probleme.  Die Probleme kann man alle lösen - allerdings muss man sie
zuerst verstehen.

Ciao,
Martin




More information about the Python-de mailing list