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

有帮助吗?

解决方案

从逻辑上讲,许多内容(例如 MIME 编码的邮件消息、URL、XML 文档等)应返回为 bytes 不是字符串。这可能会引起一些恐慌,因为 Python 3 的库开始被确定,人们发现他们必须更加了解 bytes/string 转化率高于预期 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 标准。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top