2014-10-21 9 views
5

La mia stringa è Niệm Bồ Tát (Thiá»n sÆ° Nhất Hạnh) e voglio decodificarlo per Niệm Bồ Tát (Thiền sư Nhất Hạnh) vedo in quel sito può farlo http://www.enderminh.com/minh/utf8-to-unicode-converter.aspxPython Come risolvere la codifica utf-8 rotta?

e comincio a provare da Python

mystr = '09. Bát Nhã Tâm Kinh' 
mystr.decode('utf-8') 

ma in realtà non è corretto perché la stringa originale è utf-8 ma la stringa show non è il mio risultato in attesa.

Nota: è un personaggio vietnamita.

Come risolvere il caso? È Windows Unicode o qualcosa del genere? Come rilevare la codifica qui. Grazie in anticipo

+1

sembra che è stato codificato come 'utf-8', ma interpretata come' latino-1'. – ch3ka

+1

'>>>" Niệm Bồ Tát (Thiền sư Nhất Hạnh) ". Codifica ('utf-8'). Decodifica ('latin-1')' ''Niá» \ x87m Bá »\ x93 Tát (Questo è molto vicino ... – ch3ka

+3

@ ch3ka, in realtà cp1252, un superset di latin-1 –

risposta

7

io non sono sicuro di quello che si può fare con questo tipo di dati, ma per il tuo esempio nel tuo post originale, questo funziona:

>>> mystr = '09. Bát Nhã Tâm Kinh' 
>>> s = mystr.decode('utf8').encode('latin1').decode('utf8') 
>>> s 
u'09. B\xe1t Nh\xe3 T\xe2m Kinh' 
>>> print(s) 
09. Bát Nhã Tâm Kinh 
+3

La codifica utilizzata per manipolare questi dati era molto probabilmente cp1252, quindi l'utilizzo di quello anziché di Latin-1 consentirà di recuperare più (sebbene non tutti) i caratteri. Ni m B Tát (Thi n sư Nhất Hạnh) contro Niệm Bồ Tát (Thi n sư Nhất Hạnh) –

+0

Lo so in python3 ma che ne dici di python2? – giaosudau

+0

@sepdau Il mio esempio era con Python 2.7 su Linux :) –

7

L'unica cosa che mi ha aiutato con rotta stringa cirillica - https://github.com/LuminosoInsight/python-ftfy

Questo modulo risolve praticamente tutto e funziona molto meglio dei decodificatori online.

>>> from ftfy import fix_encoding 
>>> mystr = '09. Bát Nhã Tâm Kinh' 
>>> fix_encoding(mystr) 
'09. Bát Nhã Tâm Kinh' 

può essere facilmente installato utilizzando pip install ftfy

+0

se uso "da ftfy import fix_encoding" anche se mi ha aiutato a risolvere il problema che ho riscontrato riguardo a UTF-8, il mio codice impiega troppo tempo a darmi il risultato – javac

+0

Ha funzionato per me per risolvere i problemi di codifica in html usando lxml librerie. Incredibilmente ha funzionato al primo tentativo. Grazie – rodrigorf

+0

@rodrigorf grazie dovrebbe andare a lib creator =) repo Star –

Problemi correlati