История изменений
Исправление anonymous_incognito, (текущая версия) :
Ты считаешь, что в UTF-16 всегда только два байта, так? Но там может быть либо два, либо четыре байта.
Я как раз знаю, что правильный UTF-16 на самом деле имеет переменное число байт, в отличие от UTF-32. Почему и назвал его константнобайтным.
Но, кстати, похоже ошибался, полагая, что разная длина только за счёт модификаторов (вроде знаков ударения). Сейчас почитал и в общем, тут получается, что когда-то он действительно реализовывал только ucs-2.
В общем, если вкратце видимо так можно объяснить:
1) Есть Юникод, UCS. В нём есть CodePoint'ы, которые в первом приближении можно считать символами.
2) Есть схемы кодирования юникода. utf-8, utf-16, utf-32. И некоторые вариации.
3) Для большинства случаев достаточно двух байт utf-16, при этом их номер (значение) будет совпадать с CodePoint Юникода.
4) Значения utf-8 не совпадают с CodePoint за исключением ASCII-части.
5) Конкретно в Python запись \u в строке print подразумевает использование номера (CodePoint). Выводить коды «как есть» в консоль, надо в Питоне иначе (как именно не в курсе).
Исходная версия anonymous_incognito, :
Ты считаешь, что в UTF-16 всегда только два байта, так? Но там может быть либо два, либо четыре байта.
Я как раз знаю, что правильный UTF-16 на самом деле имеет переменное число байт, в отличие от UTF-32. Почему и назвал его константнобайтным.
Но, кстати, похоже ошибался, полагая, что разная длина только за счёт модификаторов (вроде знаков ударения). Сейчас почитал и в общем, тут получается, что когда-то он действительно реализовывал только ucs-2.
В общем, если вкратце видимо так:
1) Есть Юникод, UCS. В нём есть CodePoint'ы, которые в первом приближении можно считать символами.
2) Есть схемы кодирования юникода. utf-8, utf-16, utf-32. И некоторые вариации.
3) Для большинства случаев достаточно двух байт utf-16, при этом их номер (значение) будет совпадать с CodePoint Юникода.
4) Значения utf-8 не совпадают с CodePoint за исключением ASCII-части.
5) Конкретно в Python запись \u в строке print подразумевает использование номера (CodePoint).