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