EDIT: Ich sage nur, dass Sie Python 2 verwenden, okay, ich glaube, die Antwort unten aber immer noch wertvoll ist.
In Python 2 ist dies noch komplizierter und inkonsistent. Hier haben Sie str
und unicode
, und der Standard str
unterstützt keine Unicode-Sachen.
Anyways, ist die Situation mehr oder weniger das gleiche ist, verwenden decode
statt encode
str
-unicode
zu konvertieren. Das sollte es beheben.
Mehr Infos unter: https://pythonhosted.org/kitchen/unicode-frustrations.html
Dies ist eine häufige Quelle von confusion.The Problem ist ein wenig komplex, aber ich werde versuchen, es zu vereinfachen. Ich spreche über Python 3 hier, ich glaube, es gibt einige Unterschiede mit Python 2.
Es gibt zwei Arten von, was Sie eine Zeichenfolge nennen würden: str
und bytes
.
str
ist der allgemeine Zeichenfolientyp Python, es unterstützt Unicode nahtlos in Python 3, aber die Art, wie es die eigentlichen Daten codiert, ist nicht relevant, es ist ein Objekt.
bytes
ist ein Byte-Array, wie char*
in C. Es ist eine Sequenz von Bytes.
Zeichenketten können auf beide Arten dargestellt werden, aber Sie müssen einen Codierungsstandard angeben, der zwischen den beiden übersetzt werden soll, da bytes
interpretiert werden muss, da es sich wiederum um ein unformatiertes Array von Bytes handelt.
encode
konvertiert eine str
in bytes
, das ist der Fehler, den Sie machen. Natürlich, wenn Sie bytes
drucken, zeigt es nur seine Rohdaten, AKA, die Zeichenfolge codiert als utf-8.
decode
tut die umgekehrte Operation, die möglicherweise das ist, was Sie brauchen.
Wenn Sie jedoch die Datei normalerweise (open(file_name, 'r')
) öffnen, anstatt in Byte-Modus (open(file_name, 'b'
), die ich bezweifle, dass Sie tun, sollten Sie nichts tun müssen, data
Druck sollte gerade arbeiten, wie Sie es wollen .
Mehr Infos unter: https://docs.python.org/3/howto/unicode.html
Add '# - * - Codierung: utf-8 - * - 'am Anfang des Codes und versuchen Sie es erneut – Nuageux
@Nuageux das wird nicht alles lösen - es sagt nur Python, wie String-Litterals mit dem Modul zu behandeln. –
Ich habe bereits '# Codierung: utf8' , die funktioniert auf die gleiche, ich mit versucht STIL - * - aber es änderte sich nichts – arnino