Unicode-Fehler bei Umleitung in Datei (Linux) [solved]
Verfasst: Donnerstag 25. Mai 2006, 14:47
Hallo allerseits,
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 )
wenn ich das Skript normal ausführe also:
bekomme ich folgende Ausgabe:
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:
sieht die Datei dannach folgendermaßen aus:
und wenn ich nun Zeile 5 den Kommentar wegnehme bekomme ich natürlich folgenden Fehler:
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
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()
Code: Alles auswählen
./testenc.py
Code: Alles auswählen
stdout.encoding: UTF-8
filesystemencoding: UTF-8
Leite ich nun die stdout in eine Datei um also:
Code: Alles auswählen
./testenc.py > test.txt
Code: Alles auswählen
stdout.encoding: None
filesystemencoding: UTF-8
Code: Alles auswählen
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in position 0: ordinal not in range(128)
Danke
und an alle Väter hier einen Glückwunsch zum Vatertag
Gruß Felice