标准库中的所有内容都会将字符串视为Python 3.0中的unicode吗?

时间:2008-09-18 09:29:23

标签: python unicode string cgi python-3.x

我对Python(从3.0)基于unicode的标准库的行为方式感到有些困惑。诸如CGI和urllib之类的模块是否会使用unicode字符串,还是会使用新的“字节”类型并只提供编码数据?

3 个答案:

答案 0 :(得分:11)

逻辑上,许多内容(如MIME编码的邮件,URL,XML文档等)应作为bytes而不是字符串返回。这可能会引起一些惊愕,因为图书馆开始被固定在Python 3中,人们发现他们必须更多地了解bytes / string次转化,而不是str / unicode ...

答案 1 :(得分:6)

关于这个问题(以及一般的Python)的一个好处是你可以在解释器中乱七八糟! Python 3.0 rc1 is currently available for download

>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>

答案 2 :(得分:1)

这里会有两步舞蹈。请参阅Python 3000 and You

步骤1是在3.0以下运行。

第2步是重新考虑你的API,或许做一些更明智的事情。

最可能的方法是库将切换到unicode字符串,以尽可能保持兼容性。

然后,也许有些人会切换到字节,以更好地实现各种协议的RFC标准。