Будет ли все в стандартной библиотеке обрабатывать строки как unicode в Python 3.0?

StackOverflow https://stackoverflow.com/questions/91205

Вопрос

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

Это было полезно?

Решение

По логике вещей, многие вещи, такие как почтовые сообщения в 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 для различных протоколов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top