簡體   English   中英

如何修復 Python 中損壞的 utf-8 編碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM