Будет ли все в стандартной библиотеке обрабатывать строки как Unicode в Python 3.0? - PullRequest
11 голосов
/ 18 сентября 2008

Я немного озадачен тем, как будет вести себя стандартная библиотека, поскольку Python (начиная с версии 3.0) основан на юникоде. Будут ли такие модули, как CGI и urllib, использовать строки в кодировке Unicode или они будут использовать новый тип 'байтов' и просто предоставлять закодированные данные?

Ответы [ 3 ]

11 голосов
/ 18 сентября 2008

Логически многие вещи, такие как почтовые сообщения в кодировке MIME, URL-адреса, документы XML и т. Д., Должны возвращаться как bytes, а не как строки. Это может вызвать некоторое недоумение, поскольку библиотеки для Python 3 начинают прибивать, и люди обнаруживают, что им нужно больше знать о преобразованиях bytes / string, чем о str / unicode ...

6 голосов
/ 18 сентября 2008

Одна из замечательных сторон этого вопроса (и Python в целом) заключается в том, что вы можете просто возиться с переводчиком! Python 3.0 rc1 в настоящее время доступен для скачивания .

>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>
1 голос
/ 18 сентября 2008

Здесь будет двухступенчатый танец. Смотрите Python 3000 и вы .

Шаг 1 - запустить под 3.0.

Шаг 2 - переосмыслить API, чтобы, возможно, сделать что-то более разумное.

Скорее всего, библиотеки переключатся на строки Unicode, чтобы оставаться максимально совместимыми с тем, как они работали.

Тогда, возможно, некоторые переключатся на байты для более правильной реализации стандартов RFC для различных протоколов.

...