2015-06-09 13 views
7

Sto cercando di scrivere un file in python, e non riesco a trovare un modo per decodificare un oggetto di byte prima di scrivere il file, in fondo, sto cercando di decodificare questo byte stringa:Python 3.4 decodifica byte

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

in questo, che è il testo originale che sto cercando di recuperare:

Les évadés 

ho provato ad utilizzare il .decode ('utf-8') e codificare ('utf-8'), ma nulla sembra lavorare ...

Mi capita sempre di ottenere Les évadés come risultato ... Sto usando python 3.4.3

Chiunque può aiutare?

+3

python3 utilizza utf8 come codifica predefinita. Da dove prendi quella stringa? –

+1

Quello che stai mostrando è che utf-8 viene interpretato come se fosse latino-1. La mia ipotesi è che Python stia producendo l'output corretto, ma qualunque cosa tu stia stampando è aspettato latin-1 piuttosto che utf-8. –

+0

da dove viene la stringa? –

risposta

0

Quello che dovete fare è quello di decodificare e quindi codificare:

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

-> Les evade

+0

Come diavolo ottengo downvoted quando do la risposta corretta ??? –

3

E se si desidera una soluzione di Python 3:

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

Ottimo lavoro investigativo! – holdenweb