既然 Python(从 3.0 开始)是基于 unicode 的,我对标准库的行为方式有点困惑。CGI 和 urllib 等模块会使用 unicode 字符串,还是会使用新的“字节”类型并仅提供编码数据?
hacama
问问题
460 次
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 回答