2014-10-21 18 views
5

Benim dize Niệm Bồ Tát (Thiá»n sÆ° Nhất Hạnh) ve ben o http://www.enderminh.com/minh/utf8-to-unicode-converter.aspxPython Kırık utf-8 kodlaması nasıl düzeltilir?

yapabileceği sitede gördüğünüz Niệm Bồ Tát (Thiền sư Nhất Hạnh) bunu deşifre etmek istiyorum ve ben Python

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

tarafından denemeye başlamak ama aslında doğru değil, çünkü Orijinal dize utf-8'dir ancak dize gösterisi benim beklediğim sonuç değildir.

Not: Bu, Vietnamca bir karakterdir.

Bu vaka nasıl çözülür? Windows Unicode falan mı? Burada kodlama nasıl tespit edilir. peşin

+1

görünüyor kullanılarak monte edilebilir 'utf-8' fakat 'latin 1' olarak yorumlanır. – ch3ka

+1

'>>>" Niệm Bồ Tát (Thiền sư Nhất Hạnh) "kodlama ('utf-8') decode ('latin-1')' ''Niá» \ x87m Bá »\ x93 Tát (Thiá »\ x81n sÆ ° NhẠ¥ t Hạnh) '' oldukça yakın ... – ch3ka

+3

@ ch3ka, aslında cp1252, latin-1'in bir üst kümesi –

cevap

7

yılında Teşekkür Sana verilerin bu tür ile neler yapabileceğini emin değilim, ancak orijinal yayınında örneğin, bu çalışır: Kırık bana yardımcı oldu

>>> 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

Bu verileri karıştırmak için kullanılan kodlama büyük olasılıkla cp1252 idi, bu nedenle, latin-1 yerine bunu kullanmak, karakterlerin tümünü (olsa da olmasa da) kurtarmanıza izin verir. Ni m B Tát (Thi n sư Nhất Hạnh) vs Niệm Bồ Tát (Thi n sư Nhất Hạnh) –

+0

Bunu python3'te biliyorum ama python2'ye ne dersiniz? – giaosudau

+0

@sepdau Örneğim, Linux'ta Python 2.7 ile yapıldı :) –

7

tek şey Kiril Dize - https://github.com/LuminosoInsight/python-ftfy

Bu modül hemen hemen her şeyi düzeltir ve çevrimiçi kod çözücülerden çok daha iyi çalışır.

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

Kolayca o kadar kodlanmış gibi pip install ftfy

+0

"ftfy import fix_encoding" kullanarak UTF-8 ile ilgili olarak karşılaştığım sorunu düzeltmeme yardımcı olsa da, kodum bana sonucu vermek için çok zaman alıyor – javac

+0

lxml kullanarak html'de kodlama sorunlarını düzeltmek için bana çalıştı kütüphanelerini. İnanılmaz ilk denemede çalıştı. Teşekkürler – rodrigorf

+0

@rodrigorf teşekkürler lib creator =) Yıldız repo'ya gitmeli –