Есть ли веская причина не использовать юникод, а не строку? - PullRequest
6 голосов
/ 29 ноября 2011

Многие проблемы, с которыми я столкнулся в Python, были связаны с отсутствием чего-либо в Unicode.Есть ли веская причина не использовать Unicode по умолчанию?Я понимаю необходимость переводить что-то в ASCII, но это, похоже, исключение, а не правило.

Я знаю, что Python 3 использует Unicode для всех строк.Должно ли это побудить меня как разработчика к unicode() всем моим строкам?

Ответы [ 2 ]

6 голосов
/ 29 ноября 2011

Как правило, я собираюсь сказать «нет», нет веской причины использовать string вместо unicode.Помните также, что вам не нужно вызывать unicode() для создания строки в юникоде, вы можете сделать это, поставив перед строкой префикс в виде строчной буквы u, такой как u"this is a unicode string".

4 голосов
/ 29 ноября 2011

В Python 2.x:

  • Объект str - это просто последовательность байтов .
  • A unicode объект представляет собой последовательность символов .

Зная это, легко выбрать правильный тип:

  • Если вы хотите строку символов , используйте unicode.
  • Если вы хотите, чтобы строка была закодирована в байтах , используйте str (во многих других языках вы бы использовали byte[] здесь).

В Python 3.x тип str - это строка символов, как и следовало ожидать. Вы можете использовать bytes, если вы хотите последовательность байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...