Будет ли строка UNICODE, содержащая только символы ASCII, всегда равна строке ASCII?

Я заметил следующее:

>>> u'abc' == 'abc' True >>> 'abc' == u'abc' True 

Будет ли это всегда быть верным или может ли оно зависеть от локали системы? (Кажется, строки являются unicode в python 3: например, этот вопрос , но байты в 2.x)

One Solution collect form web for “Будет ли строка UNICODE, содержащая только символы ASCII, всегда равна строке ASCII?”

Python 2 обеспечивает согласование между unicode и str используя кодек ASCII при сравнении двух типов. Так что да, это всегда так.

То есть, если вы не испортите установку Python и не используете sys.setdefaultencoding() чтобы изменить это значение по умолчанию. Вы не можете сделать это нормально, потому что sys.setdefaultencoding() удаляется из модуля во время запуска, но существует Cargo Cult, где люди используют reload(sys) для восстановления этой функции и изменения кодировки по умолчанию что-то еще, чтобы попытаться исправить проблемы неявного кодирования и декодирования. По этой причине это глупо.

  • Как найти акцентированные символы в строке в Python?
  • Печать японских (китайских) персонажей
  • Что означает sys.maxunicode?
  • Запись строки utf-8 внутри моих файлов python
  • Прочитайте файл unicode в python, который объявляет его кодировку так же, как источник python
  • Поиск символов Юникода в Python
  • что же такое номер юникода?
  • UnicodeDecodeError при использовании Python 2.x unicodecsv
  • специфичная для платформы семантика Unicode в Python 2.7
  • CSV, DictWriter, unicode и utf-8
  • python unicode обрабатывает различия между print и sys.stdout.write
  • Python - лучший язык программирования в мире.