标准库中的所有内容都将字符串视为Python 3.0中的unicode吗?
时间:2020-03-06 14:20:34 来源:igfitidea点击:
既然Python(从3.0开始)是基于unicode的,我对标准库的行为感到有些困惑。 CGI和urllib之类的模块会使用unicode字符串还是会使用新的"字节"类型并仅提供编码数据?
解决方案
从逻辑上讲,许多东西(例如MIME编码的邮件消息,URL,XML文档等)应以"字节"而不是字符串的形式返回。这可能会引起一些惊con,因为库开始被Python 3钉住,人们发现他们必须比str
/unicode
更了解字节/字符串转换...
关于这个问题(通常是Python)的一件大事是,我们可以在解释器中乱搞! Python 3.0 rc1当前可下载。
>>> import urllib.request >>> fh = urllib.request.urlopen('http://www.python.org/') >>> print(type(fh.read(100))) <class 'bytes'>
这里将有两步舞。请参阅Python 3000和我们。
步骤1是在3.0下运行。
第2步是重新考虑API,以便做一些更明智的事情。
最有可能的做法是,库将切换为unicode字符串,以使其与以前的工作方式保持尽可能的兼容。
然后,也许有些人会切换到字节以更适当地实现各种协议的RFC标准。