[Python-de] unicode String in Datei schreiben

Mirko brainerror at gmx.net
Son Mar 6 01:19:18 CET 2005


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

Da fehlt ein u vor "\xdc", also:
f.write(u"\xdc")

Hier, was mein Interpreter dazu sagt:

>>> f = codecs.open("unicode_test.txt","w","utf8")
>>> f.write("\xdc")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.3/codecs.py", line 400, in write
    return self.writer.write(data)
  File "/usr/lib/python2.3/codecs.py", line 178, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdc in position 0:
ordinal not in range(128)
>>> f.write(u"\xdc")
>>> f.close()

Hintergrund: Erst das u vor dem String erzeugt bzw. erzwingt einen
Python-Unicode-String. Per default benutzt Python für Strings kein
Unicode. Meines Erachtens hat Java dieses Problem besser gelöst (alles
erstmal UTF-8), aber mit dem kleinen u kann man eigentlich auch leben.

Gute Nacht,

Mirko