当前位置:   article > 正文

pythonunicode转为字符串_如何在Python级别将Unicode转换为字符串?

python unicode转字符串

你(在评论中)问:“这就是让我困惑的地方。它是如何从最初的强调到现在的?当你说用utf8和latin1进行双重编码时,总共有3次编码吗(2次utf8+1次latin1)?从原始状态到当前状态的编码顺序是什么?

在马克·拜尔斯的回答中,他说:“你似乎是一个被错误解码的UTF-8编码。”你已经接受了他的回答。但你还是很困惑?好的,这里是一次又一次的描述:

注意:所有字符串将使用(隐式)显示

repr()

.

unicodedata.name()

将用于验证内容。这样,控制台编码的变化就不会混淆字符串的解释。

初始状态:您有一个名为U1的Unicode对象。它含有E-急性:

>>> u1 = u'\xe9'

>>> import unicodedata as ucd

>>> ucd.name(u1)

'LATIN SMALL LETTER E WITH ACUTE'

将U1编码为UTF-8并将结果命名为S:

>>> s = u1.encode('utf8')

>>> s

'\xc3\xa9'

您使用Latin1解码——不正确;S是使用UTF8编码的,而不是Latin1。结果是毫无意义的垃圾。

>>> u2 = s.decode('latin1')

>>> u2

u'\xc3\xa9'

>>> ucd.name(u2[0]); ucd.name(u2[1])

'LATIN CAPITAL LETTER A WITH TILDE'

'COPYRIGHT SIGN'

>>>

请理解:

unicode_object.encode('x').decode('y)

当X!=Y通常(见下面的注释)是一个胡说八道;如果你运气好,它会引发一个例外;如果你运气不好,它会悄悄地制造出乱说。另外,请理解,无声地创建乱码并不是一个bug——Python(或任何其他语言)无法检测出已提交的胡说八道。这一点尤其适用于涉及Latin1的情况,因为所有256个码点都用前256个Unicode码点映射1到1,因此不可能从str ou object.decode(“Latin1”)中获得unicode decode错误。

当然,不正常地(人们希望它是不正常的),你可能需要通过做来扭转这种胡说八道。

gibberish_unicode_object.encode('y').decode('x')

如你问题的各种答案所建议的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/153743?site
推荐阅读
相关标签
  

闽ICP备14008679号