[Python-de] unicode String in Datei schreiben

"Martin v. Löwis" martin at v.loewis.de
Son Mar 6 01:05:12 CET 2005


Albert Hermeling wrote:
> Hier mein Problem:
> 
> import codecs
> f = codecs.open("/programmieren/unico/unicode_test.txt","wb","utf8")
> f.write("\xdc")
> 
[...]
> Das sollte doch eigentlich funktionieren oder?

Nein. Die Gänsefüßchen bedeuten in Python "byte string", also
Folge von Zahlen zwischen 0 und 255. Eine mit codecs.open
geöffnete Datei erwartet aber "unicode string", also eine Folge
von Zahlen zwischen 0 und sys.maxunicode. Literale dieses Datentyps
beginnen mit 'u', also

import codecs
f = codecs.open("/programmieren/unico/unicode_test.txt","wb","utf8")
f.write(u"\xdc")

Ciao,
Martin

P.S. Versucht man, einen byte string in einen Unicode-Stream zu
schreiben, so wird der byte string zunächst automatisch mit Hilfe
von sys.getdefaultencoding() umgewandelt, um dann wieder mittels
"utf8" in einen byte string zurückkonvertiert und in die Datei
geschrieben zu werden. Das system default encoding ist normalerweise
"us-ascii", also liefert Dein Code einen Fehler in der
ASCII-Konvertierung.