[英]How to fix broken utf-8 encoding in Python?
我的字符串是Niệm Bồ Tát (Thiá»n sÆ° Nhất Hạnh)
我想將它解碼為Niệm Bồ Tát (Thiền sư Nhất Hạnh)
。 我在那個網站上看到可以做到http://www.enderminh.com/minh/utf8-to-unicode-converter.aspx
我開始嘗試 Python
mystr = '09. Bát Nhã Tâm Kinh'
mystr.decode('utf-8')
但實際上它是不正確的,因為原始字符串是 utf-8 但字符串顯示不是我的預期結果。
注:是越南字。
如何解決這種情況? 那是 Windows Unicode 還是什么? 如何在此處檢測編碼。
唯一幫助我消除西里爾字母字符串的東西-https: //github.com/LuminosoInsight/python-ftfy
這個模塊幾乎可以解決所有問題,並且比在線解碼器要好得多。
>>> from ftfy import fix_encoding
>>> mystr = '09. Bát Nhã Tâm Kinh'
>>> fix_encoding(mystr)
'09. Bát Nhã Tâm Kinh'
可以使用pip install ftfy
輕松安裝
我不確定您可以使用這些數據做什么,但是對於您在原始帖子中的示例來說,它可以工作:
>>> 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
嘗試:
str.encode('ascii', 'ignore').decode('utf-8')
您正在以ASCII格式編碼字符串/忽略錯誤並以UTF-8解碼。 這可以消除重音,但這是一種方法。
python 3.9.6 中的正確方法是:
"string".encode('utf-8').decode('latin-1')
"string".encode('latin1').decode('utf8')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.