[Python-de] open(File) - UTF-8

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Jul 11 16:16:53 UTC 2008


Hallo Matthias,

On 2008-07-11 14:21, Matthias Huening wrote:
> Ja, nee, das ist es nicht. Das Skript ist schon selber UTF-8:
> # -*- coding: utf-8 -*-

diese Encoding-Zeile sagt Python, dass die _Datei_ in UTF-8
kodiert ist. Das ist wichtig, wenn in deiner Datei andere
Zeichen als in 7-Bit-ASCII vorkommen, zum Beispiel Umlaute.

Ob vor einem String das u-Präfix steht, ist eine ganz andere
Geschichte. Wenn ja, bekommst du einen Unicode-String, wenn
nicht, einen Byte-String (8-Bit-Zeichen).

Wenn du also

    # encoding: utf-8

am Anfang der Datei stehen hast, aber einen String mit

    s = "Byte-String"

erzeugst, verweist der Name s "trotzdem" auf einen Byte-String.

Wenn oben in der Datei

    # encoding: latin1

(Datei ist in einem 8-Bit-Encoding) steht und in der Datei

    u = u"Unicode-String"

vorkommt, verweist der Name u auf einen Unicode-String.

Die Encoding-Deklaration am Dateianfang entscheidet _nicht_
darüber, ob ein String aus Sicht von Python ein Byte-String
oder ein Unicode-String ist. Sie sagt Python "nur", in welchem
Encoding Nicht-7-Bit-Zeichen in Zeichenketten-Konstanten
vorliegen.

Viele Grüße
Stefan



Mehr Informationen über die Mailingliste python-de