Я немного смущен тем, как Python 3 обрабатывает многобайтовые символы юникода. Вот пример с смайликом:Выбор подстроки с использованием многобайтовых символов Unicode в Python 3
In [1]: print('☺️')
☺️
In [2]: print(len('☺️'))
2
In [3]: print('☺️'[0])
☺
In [4]: print('☺️'[1])
️
In [5]: print(len(''))
4
Поскольку я работаю на небольшое хобби проекта по смайликам, это вызывает определенные проблемы для меня, так как я предпочел бы иметь дело с смайликами в виде отдельных строк символов, а не лечение как многоканальные строки, как это делает Python 3. Почему Python 3 не признает это как один символ, и как мне работать и работать с emojis таким образом, который я бы предпочел?
Если это довольно проблема с моим терминалом или REPL, я использую терминал macOS Sierra с iPython 5.1.0.
☺️ представлен * двумя * байтами с использованием схемы UTF-16. – Maroun
@MarounMaroun Конечно, но это все равно один символ? UTF- (8 | 16) поддерживает многобайтовые символы. –
@MarounMaroun Это четыре байта в UTF-16. –