В Юникоде (а UTF-8 - Юникод), существует проблема композиции .Токен, подобный é
, может быть представлен своей собственной кодовой точкой или кодовой точкой e
, за которой следует ´
.Может быть так, что один кодируется с использованием предварительной композиции (é
), а другой - с помощью декомпозиции (e´
).Оба будут отображаться одинаково.Чтобы избежать этой проблемы, следует нормализовать строки в одном из этих типов композиции.
Конечно, может быть другая проблема, но это одна из проблем, которая может привести к тому, что строки одинакового вида не будут сравниваться как равные.OTOH, если в вашем тексте нет символов вне ASCII, это вряд ли проблема.
Правильный способ сравнения строк - сначала нормализовать их.Вы можете сделать это в Python с помощью модуля unicodedata
.
Стандартное техническое приложение Unicode # 15 описывает состав и нормализация в деталях.