Python 3.0中的标准库会将字符串视为Unicode吗?
我有点困惑,现在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的库逐渐确定时,人们会发现他们需要比以前在str
和unicode
之间转换时更加注意bytes
和string
之间的转换...