LINUX.ORG.RU

История изменений

Исправление 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).