标准库中的所有内容都会将 Python 3.0 中的字符串视为 unicode 吗?
-
01-07-2019 - |
题
既然 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 标准。
不隶属于 StackOverflow