2015-06-09 27 views
7

Ich versuche, eine Datei in Python zu schreiben, und ich kann nicht einen Weg zu dekodieren ein Byte-Objekt, bevor Sie die Datei zu schreiben, im Grunde, ich versuche, diese zu entschlüsseln Bytes Zeichenfolge finden:Python 3.4 dekodieren Bytes

Les \xc3\x83\xc2\xa9vad\xc3\x83\xc2\xa9s 

in das, was der ursprüngliche Text ich versuche, sich zu erholen:

Les évadés 

ich versuchte, die .decode mit ('utf-8') und kodieren ('utf-8'), aber nichts scheint zu arbeiten ...

Ich bekomme immer Les évadés als Ergebnis ... Ich benutze Python 3.4.3

Jeder kann helfen?

+3

Python3 verwendet utf8 als Standardcodierung. Woher bekommst du diese Saite? –

+1

Was du zeigst ist, dass utf-8 so interpretiert wird, als wäre es latin-1. Meine Vermutung ist, dass Python die richtige Ausgabe produziert, aber was auch immer Sie es drucken, wird erwartet, dass latin-1 statt utf-8 erwartet. –

+0

Woher kam die Saite? –

Antwort

0

Was Sie tun müssen, ist zu entschlüsseln und dann codieren:

s = "Les \xc3\x83\xc2\xa9vad\xc3\x83\xc2\xa9s" 
utf = s.decode('utf-8') 
latin = utf.encode("latin-1","ignore") 
print latin 

-> Les ausweicht

+0

Wie zur Hölle bekomme ich runter, wenn ich die richtige Antwort gebe ??? –

3

Und wenn Sie eine Python 3 Lösung wollen:

b = b'Les \xc3\x83\xc2\xa9vad\xc3\x83\xc2\xa9s' 
u = b.decode('utf-8').encode('latin-1').decode('utf-8') 
print(u) 
# Les évadés 
+0

Großartige Detektivarbeit! – holdenweb