[Python-de] Unicode, warum ASCII als default, warum nicht Latin-1 ???

Martin v. Löwis martin at v.loewis.de
Tue May 6 01:49:32 EDT 2003


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

> Meine Anmerkung oben war etwas zu kurz. Unten will ich Dir ein
> Beispiel nennen. Du hast recht, falls der Dateiname nur intern zum
> Öffnen, schreiben+lesen und dann close verwendet wird. In der Praxis
> kommt dazu aber sehr oft noch zB ein Print oder Log: - Bearbeitet
> gerade Datei "Name" etc.
> Diese Stellen brechen alle mit Unicode-Error ab. Module, die früher liefen.

Ein Print oder Log, das früher lief, bricht jetzt mit einem
Unicode-Error ab? Etwa so?

print dateiname

??? Das glaube ich nicht. Wenn dateiname ein Byte-String ist (wie er
es ja sein muss, wenn es alter Code ist), dann funktioniert das print
genausogut wie vorher. Was für ein Log Du verwendest, kann ich nur
raten, aber ich nehme an, das müsste genauso weiter funktionieren.

> zB: tkFileDialog.py: Auswahl eines Files mit Umlaut -> unicode-crash
> wegen print tkSimpleDialog.py: crasht, wenn man Umlaute eingibt usw.

Ah, tkFileDialog. Ja, das gibt es Unicode-Strings zurück.  In Python
2.1 kann man die tatsächlich oft nicht an Datei-Funktionen übergeben.
In Python 2.2 unter Windows schon - da wird nämlich das
Plattform-Encoding für Dateinamen verwendet. Für Python 2.3 sollte
solche Dateinamen sich in allen API-Funktionen verwenden lassen, auf
Windows, Unix und Mac.

Die Verwendung des system default encoding wäre hier allerdings fatal
gewesen: Auf Mac OS X *muss* ein solcher Dateiname UTF-8-kodiert
werden, egal, was das Encoding der locale ist.

> Diese Kodeteile müssten eigentlich alle überarbeitet werden.

In Python 2.3 sind sie es auch.

> Sorry, ich meinte damit: Oft weiss ich, das mein Script nur für
> einen kleinen Kreis in Deutschland interessant ist und er unter Win
> läuft und daher nur der Windows-Zeichensatz in Frage kommt. Der
> große Unicode- Rundumschlag wäre nicht nötig, ASCII + ein paar
> Umlaute reichten...

Dann läßt sich ein solches Programm ja relativ leich anpassen: Man
muss nur an ein paar Stellen die richtigen .encode- und
.decode-Aufrufe einfügen, fertig.

> Naja, warten wir mal ab. Wie lange gibt es Unicode schon? Etwa 10
> Jahre?

Ungefähr, ja.

> Es sind immer noch sehr viele Programme nicht Unicode-tauglich.

Das ist ja auch gar nicht erforderlich: Sehr viele Programme sollen
auch gar nicht mit nicht-ASCII-Text arbeiten. Diejenigen, die es
sollen, muss man halt anpassen.

Ciao,
Martin





More information about the Python-de mailing list