如何修复 Python 中损坏的 utf-8 编码?

新手上路,请多包涵

我的字符串是 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 还是什么?如何在这里检测编码。

原文由 giaosudau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 695
2 个回答

我不确定您可以用这些数据做什么,但是对于您在原始帖子中的示例,这是有效的(Python 3.x):

 >>> mystr = '09. Bát Nhã Tâm Kinh'
>>> s = mystr.encode('latin1').decode('utf8')
>>> s
'09. Bát Nhã Tâm Kinh'
>>> print(s)
09. Bát Nhã Tâm Kinh

原文由 Jonathan Ballet 发布,翻译遵循 CC BY-SA 4.0 许可协议

唯一帮助我解决西里尔字符串损坏的问题 - 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 轻松安装

原文由 Dmytro Rostopira 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题