栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用python解码代表utf-8的字符串?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用python解码代表utf-8的字符串?

如果您打印了字符串的

repr()
输出,
unipre
那么您似乎有一个
Mojibake
,使用错误的编码对字节数据进行了解码。

首先编码回字节,然后使用正确的编解码器解码。这可能像编码Latin-1一样简单:

unipre_string.enpre('latin1').depre('utf8')

但是,这取决于如何应用错误的解码。如果使用Windows代码页(如CP1252),则无论如何强制对CP1252范围之外的UTF-8字节进行编码,最终可能会得到实际上无法编码回CP1252的Unipre数据。

修复此类错误的最佳方法是使用

ftfy
库,该库知道如何处理各种编解码器的强制解码的Mojibake文本。

对于您的小样本,Latin-1 似乎 可以正常工作:

>>> unipre_string = u'xE5xB1xB1xE4xB8x9C xE6x97xA5xE7x85xA7'>>> print unipre_string.enpre('latin1').depre('utf8')山东 日照>>> import ftfy>>> print ftfy.fix_text(unipre_string)山东 日照

如果您有 文字
字符

x
后跟两位数字,那么您将拥有另一层编码层,其中字节被4个字符替换。您必须先要求Python使用
string_escape
编解码器解释转义,然后才能将其“解码”为实际字节:

>>> unipre_string = ur'xE5xB1xB1xE4xB8x9C xE6x97xA5xE7x85xA7'>>> unipre_stringu'\xE5\xB1\xB1\xE4\xB8\x9C \xE6\x97\xA5\xE7\x85\xA7'>>> print unipre_string.depre('string_escape').depre('utf8')山东 日照

'string_escape'
是一个Python 2唯一的编解码器,它产生一个字节串,因此以后将其解码为UTF-8是安全的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号