UTF-8 Problem in Python beim Lesen von Zeichen

8

Ich benutze Python 2.5. Was geht hier vor sich? Was habe ich falsch verstanden? Wie kann ich es beheben?

in.txt:

%Vor%

code.py

%Vor%

Ausgabe:

%Vor%     
jacob 12.06.2009, 07:39
quelle

5 Antworten

14
%Vor%

Wenn Sie die Datei lesen, ist die Zeichenfolge, die Sie einlesen, eine Bytefolge. Die for-Schleife iteriert jeweils um ein Byte. Dies führt zu Problemen mit einer UTF-8-codierten Zeichenfolge, bei der Nicht-ASCII-Zeichen durch mehrere Bytes dargestellt werden. Wenn Sie mit Unicode-Objekten arbeiten möchten, bei denen die Zeichen die grundlegenden Elemente sind, sollten Sie

verwenden %Vor%

Wenn sys.stdout nicht bereits über den entsprechenden Codierungssatz verfügt, müssen Sie ihn möglicherweise umbrechen:

%Vor%     
Miles 12.06.2009, 07:50
quelle
2

Benutze stattdessen codecs.open, es funktioniert für mich.

%Vor%     
mhawke 12.06.2009 07:45
quelle
1

Sieh dir das an:

%Vor%

Es gibt Folgendes zurück:

Stäckövérfløw
'St \ xc3 \ xa4ck \ xc3 \ xb6v \ xc3 \ xa9rfl \ xc3 \ xb8w'
S t? ? c k? ? v? ? r f l? ? w

Die Sache ist, dass die Datei nur als eine Bytefolge gelesen wird. Beim Iterieren werden die Multibyte-Zeichen in unsinnige Byte-Werte aufgeteilt.

    
mikl 12.06.2009 07:42
quelle
1
%Vor%

Fügt einen "leeren Buchstaben" hinzu und bricht korrekte utf-8 Sequenzen in falsche ab. Das würde also nicht funktionieren, wenn Sie nicht ein Signle-Byte zur Ausgabe schreiben würden

%Vor%     
Artyom 12.06.2009 07:56
quelle
0

Vielleicht möchten Sie einfach

verwenden %Vor%     
j1k00 05.12.2013 11:45
quelle

Tags und Links