Python 3.0中的标准库会将字符串视为Unicode吗?

12 投票
3 回答
489 浏览
提问于 2025-04-11 09:20

我有点困惑,现在Python(从3.0开始)是基于Unicode的,标准库会怎么表现。像CGI和urllib这样的模块会使用Unicode字符串,还是会使用新的'bytes'类型,只提供编码后的数据呢?

3 个回答

1

这里有一个两步走的过程。可以参考一下Python 3000和你

第一步是让你的代码在3.0版本下运行。

第二步是重新考虑你的API(应用程序接口),也许可以做得更合理一些。

最有可能的情况是,库会改用unicode字符串,以尽量保持与之前的工作方式兼容。

然后,可能有些库会改用字节(bytes),以更好地遵循各种协议的RFC标准。

7

这个问题的一个好处(还有Python本身)就是你可以直接在解释器里随便试试!现在可以下载Python 3.0 rc1版本

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

从逻辑上讲,很多东西,比如MIME编码的邮件消息、网址(URL)、XML文档等等,应该以bytes的形式返回,而不是字符串。这可能会让一些人感到困惑,因为当Python 3的库逐渐确定时,人们会发现他们需要比以前在strunicode之间转换时更加注意bytesstring之间的转换...

撰写回答