Столкнулся с проблемой при написании функции для телеграм-бота, который обрабатывает текст и добавляет новые
entities (свойства текста). Иногда он это делает со смещением. Как показала практика, это связано с подсчётом длины сообщения из-за наличия в них эмодзи.
Многие эмодзи на самом деле занимают два символа, хоть отображаются как одна "картинка". Естественно и длина этих эмодзи определяется как 1 символ.
Пример. Делаем строку с таким эмодзи.
Но на самом деле эмодзи из двух символов:
Пайтон видит длину так:
В итоге в Телеграм сообщение имеем такое смещение при добавлении текстовой ссылки:
Как можно исправить этот косяк? Чем и как считать длину? По идее же, это UTF-8 показывает эмодзи как один символ. Может как-то менять кодировку при подсчёте длины?