12

既然 Python(从 3.0 开始)是基于 unicode 的,我对标准库的行为方式有点困惑。CGI 和 urllib 等模块会使用 unicode 字符串,还是会使用新的“字节”类型并仅提供编码数据?

4

3 回答 3

12

从逻辑上讲,像 MIME 编码的邮件消息、URL、XML 文档等很多东西都应该作为bytes非字符串返回。这可能会引起一些恐慌,因为 Python 3 的库开始被确定下来,人们发现他们必须更加了解bytes/string转换而不是str/ unicode...

于 2008-09-18T09:52:48.190 回答
7

这个问题(以及一般的 Python)的一大优点是你可以在解释器中乱搞!Python 3.0 rc1 目前可供下载

>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
于 2008-09-18T09:58:19.473 回答
1

这里会有两步舞。请参阅Python 3000 和您

第 1 步是在 3.0 下运行。

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

最有可能的情况是库将切换到 unicode 字符串,以尽可能与它们过去的工作方式保持兼容。

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

于 2008-09-18T10:35:07.187 回答