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

了解解码()和编码()Unicode [重复]

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

了解解码()和编码()Unicode [重复]

你调用

depre
一个
unipre
字符串。Python的有益第一 编码 使用默认的ASCII编码解码器,让你有实际字节的字符串
解码。您无法解码Unipre数据本身,因为它 已经被 解码。

由于字节不是有效的UTF-32数据,因此解码失败。字节串

'abcd'
可解码为UTF-8,因为ASCII是UTF-8的子集。编码为ASCII然后解码为UTF-8会产生相同的信息。由于UTF-16解码偶然发生了;您提供了4个字节,其十六进制值分别为0x61、0x62、0x63和0x64(字符的ASCII值
abcd
),并且这些字节可以被解码为UTF-16
little endian
u6261
u6463
。但是在UTF-32编码系统中,这4个字节没有有效的解码。

如果

s
其中包含无法先编码为ASCII的数据,则会出现
UnipreEnpreError
异常;注意该名称中的 编码

>>> u'åßç'.depre('utf8')Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/encodings/utf_8.py", line 16, in depre    return precs.utf_8_depre(input, errors, True)UnipreEnpreError: 'ascii' prec can't enpre characters in position 0-2: ordinal not in range(128)

因为对字节字符串的隐式编码失败。

在Python
3中,

unipre
对象已重命名为
str
,并且该
str.depre()
方法已从类型中删除,以防止此类混淆。只有
str.enpre()
遗体。Python
str
类型已被
bytes
仅具有
bytes.depre()
方法的类型所代替。

第二个示例显示您正在终端或控制台中交互使用Python解释器。Python从终端接收的输入为UTF-8字节,并将这些字节存储在字节串中。如果您使用

unipre
文字,Python会使用为终端声明的编码自动解码这些字节。您可以内省
sys.stdin.encoding
一下Python检测到的内容:

>>> import sys>>> sys.stdin.encoding'UTF-8'>>> s = '≈'>>> s'xe2x89x88'>>> s = u'≈'>>> su'u2248'>>> print s≈

反之亦然,当打印

sys.stdout.encoding
编解码器时,它用于将Unipre字符串自动编码为终端所使用的编解码器,然后,编解码器再次解释这些字节,以在屏幕上显示正确的字形。

如果您不是在Python交互式解释器中工作,而是在使用Python源文件,则使用的编解码器将由PEP-263
Python源代码编码声明确定 ,因为Python
2否则默认将字节解码为ASCII。

sys.getfilesystemencoding()
与这一切无关;它告诉您Python认为您的 文件系统元数据
被编码的方式;例如目录中的文件名。当您将
unipre
路径用于与文件系统相关的调用(例如)时,将使用这些值
os.listdir()



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

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

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