Gremlin hat geschrieben:
Dann ergibt sich für mich da aber wieder ne Frage, und zwar wie soll ich das machen? Sehr viel in meinem Programmcode besteht aus konstanten strings und die hab ich mit einem cookie als utf-8 ausgewiesen. Kann ich die auch per cookie als unicode ausweisen oder muss ich dann wirklich überall das "u" vorne dran hängen? (Mein Gefühl sagt mir zwar, ja, muss ich, aber fragen kostet ja nichts..)
Naja, im Quellcode steht ja nun einmal kein Unicode, sondern irgend welche Byte-Strings. (Wie schön aus den Folien von Leonidas hervorgeht und was auch ich erst mal begreifen musste ist ja grad der Witz, dass Unicode nur ein Konzept und keine Codierung zum Speichern darstellt.) Python muss nun ja wissen, mit welchem Encoding diese Strings im Programm stehen, damit der Interpreter das gante parsen kann. Standardmäßig wird bei Python 2.x ASCII angenommen; will man etwas anderes hilft das Festlegen des Encodings (es muss natürlich dann auch in dem Format gespeichert sein

).
Unicode-Strings sind in Deiner Datei ja zunächst eben auch Bytestrings; damit Python diese automatisch decodieren kann, braucht es ebenfalls die Angabe des Encodings oben im Script Kopf. Somit kann der Interpreter aus den Bytestrings Deiner Code-Datei intern in Unicode wandeln.
Die simple Antwort lautet damit: Durch Festlegen des Encodings im Dateikopf, kannst Du eben Unicode-Strings in den Quellcode hinschreiben, die Umlaute usw. enthalten können, sofern das Endoding der Datei dieses zulässt. Python nimmt dann intern eben dieses Encoding und es klappt.
Kannst Du ja mal testen:
Das kannst Du ruhig als utf-8 speichern - Python wird dennoch ASCII als default encoding annehmen und dann intern den Unicode-String (der hier ja eben noch ein Bytestring ist) mit ASCII als encoding decodieren. Damit läuft der Interpreter in einen Fehler.
Schreibst Du das Encoding rein, klappt es
