2008-09-18 30 views
10

我对Python标准库(从3.0开始)基于unicode的标准库的行为有些困惑。诸如CGI和urllib这样的模块会使用unicode字符串,还是会使用新的“字节”类型并仅提供编码数据?标准库中的所有内容都将Python字符串视为unicode吗?

+0

也许这个问题不应该由同胞程序员回答,而是由Python开发者(间接最好;这里浏览开发者的讨论:http://mail.python.org/pipermail/python-3000/) – tzot 2008-09-18 09:31:42

回答

11

逻辑上的很多东西像MIME编码的邮件,网址,XML文档等,应返回bytes不是字符串。这可能导致有些惊愕的库一开始就被确定下来的Python 3,人们发现,他们必须更加意识到bytes/string转换比他们的str/unicode的...

6

一位伟大的关于这个问题(和Python一般)的事情是,你可以在解释器中乱搞! Python 3.0 rc1 is currently available for download

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

我同意 - 今天早上我编译并安装了rc1,我已经花了太多时间在玩它了!我只是想知道是否有一个标准的规则,什么是unicode,哪些不是。 – hacama 2008-09-18 10:26:18

1

这里将有两步舞。请参阅Python 3000 and You

第1步是让3.0下运行。

第二步是重新考虑你的API来,也许,做一些更明智。

最可能的过程是库将切换到unicode字符串以尽可能保持与他们以前的工作方式的兼容性。

然后,也许有些人会切换到字节更恰当地实现对各种协议的RFC标准。

相关问题