eigentlich kenne ich mich mit der Thematik Unicode in Python, auch dank gerold's super Tutorial http://www.python-forum.de/viewtopic.php?p=30740& ganz gut aus.
Allerdings habe ich ein sehr spezielles Problem bei der Umleitung einer Ausgabe in eine Datei.
Zur Demonstration des Problems gebe ich hier einfach mal ein Code-Beispiel. (Wie heißt es so schön: ein code sagt mehr als 1000 Worte

Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
#print u'\xb7' #hier weggelassen, da sonst Fehler bei Umleitung in Datei
print "stdout.encoding: ", sys.stdout.encoding
print "filesystemencoding: ", sys.getfilesystemencoding()
wenn ich das Skript normal ausführe also:
Code: Alles auswählen
./testenc.py
bekomme ich folgende Ausgabe:
Code: Alles auswählen
stdout.encoding: UTF-8
filesystemencoding: UTF-8
wenn ich also in Zeile 5 den Kommentar weglasse wird dieses Zeichen (midpoint) auch korrekt ausgegeben und dargestellt.
Leite ich nun die stdout in eine Datei um also:
Code: Alles auswählen
./testenc.py > test.txt
sieht die Datei dannach folgendermaßen aus:
Code: Alles auswählen
stdout.encoding: None
filesystemencoding: UTF-8
und wenn ich nun Zeile 5 den Kommentar wegnehme bekomme ich natürlich folgenden Fehler:
Code: Alles auswählen
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in position 0: ordinal not in range(128)
Ich bin fast am Verzweifeln, da ich es seit Tagen nicht schaffe dem Fehler auf die Spur zu kommen. Jede Hilfe ist herzlichst willkommen.
Danke
und an alle Väter hier einen Glückwunsch zum Vatertag
Gruß Felice