Почему кодовые точки Юникода выглядят как U+
<codepoint>
?
Например, U+2202
представляет символ ∂.
Почему бы не U-
(тире или дефис) или что-нибудь еще?
Почему кодовые точки Юникода выглядят как U+
<codepoint>
?
Например, U+2202
представляет символ ∂.
Почему бы не U-
(тире или дефис) или что-нибудь еще?
Символы "U +" представляют собой ASCIIfied версию символа U + 228E MULTISET UNION "⊎" U (U-образный символ объединения со знаком "плюс" внутри него), который должен был символизировать Unicode как объединение наборов символов, См. описание Kenneth Whistlers в списке рассылки Unicode.
Стандарт Unicode нуждается в некоторых обозначениях для разговора о кодовых точках и именах символов. Он принял соглашение "U +" , за которым следуют четыре или более шестнадцатеричных цифр, по крайней мере, еще Unicode Standard, версия 2.0.0, опубликованной в 1996 году (источник: архивированная копия PDF на веб-сайте Консорциума Юникода).
Обозначение "U +" полезно. Это дает возможность маркировать шестнадцатеричные цифры как кодовые точки Unicode, а не октеты, или неограниченные 16-битные величины, или символы в других кодировках. Он хорошо работает при запуске текста. "U" предлагает "Юникод".
Мое личное воспоминание о дискуссиях в области программного обеспечения в начале 1990 года о Unicode заключается в том, что соглашение о "U +" , сопровождаемое четырьмя шестнадцатеричными цифрами, было распространено во времена Unicode 1.0 и Unicode 2.0. В то время Unicode рассматривался как 16-битная система. С появлением Unicode 3.0 и кодировкой символов в кодовых точках U + 010000 и выше было принято соглашение "U-" , за которым следуют шесть шестнадцатеричных цифр, в частности, чтобы выделить дополнительные две цифры в числе. (Или, может быть, это было наоборот, переход от "U-" к "U +" .) По моему опыту, соглашение "U +" теперь гораздо более распространено, чем конвенция "U-" , и мало кто использует разность между "U +" и "U-" , чтобы указать количество цифр.
Я не смог найти документацию о переходе с "U +" на "U-" . В архивных сообщениях списка рассылки с 1990 года должно быть доказательство этого, но я не могу с уверенностью сказать никому. Unicode Standard 2.0 заявил: "Коды символов Unicode имеют равномерную ширину 16 бит". (стр. 2-3). Он заключил свое соглашение о том, что "индивидуальное значение Unicode выражается как U + nnnn, где nnnn - четырехзначное число в шестнадцатеричной системе" (стр. 1-5). Суррогатные значения были выделены, но коды символов не были определены выше U + FFFF, и не было упоминания о UTF-16 или UTF-32. Он использовал "U +" с четырьмя цифрами. Unicode Standard 3.0.0, опубликованный в 2000 году, определил UTF-16 (стр. 46-47) и обсудил коды U + 010000 и выше. Он использовал "U +" с четырьмя цифрами в некоторых местах и с шестью цифрами в других местах. Самый прочный след, который я нашел, был в Unicode Standard, версия 6.0.0, где таблица синтаксической нотации BNF определяет символы U+HHHH
и U-HHHHHHHH
(стр. 559).
Нотация "U +" не является единственным соглашением для представления кодовых единиц Unicode или кодовых единиц. Например, Язык Python определяет следующие строковые литералы:
u'xyz'
, чтобы указать строку Unicode, последовательность символов Unicode'\uxxxx'
, чтобы указать строку с символом unicode, обозначенным четырьмя шестнадцатеричными цифрами'\Uxxxxxxxx'
, чтобы указать строку с символом юникода, обозначенным восемью шестнадцатеричными цифрамиЭто зависит от того, какую версию стандарта Unicode вы говорите. Из Wikipedia:
Старые версии стандартного использования аналогичные обозначения, но слегка разные правила. Например, Юникод 3.0 используется "U-", за которым следуют восемь цифр, и допускается использование "U +" только с четырьмя цифрами до укажите код, а не код точка.
Это просто соглашение, показывающее, что это значение Юникод. Немного как "0x" или "h" для шестнадцатеричных значений (0xB9
или B9h
). Почему 0xB9
, а не 0hB9
(или &hB9
или $B9
)? Просто потому, что то, как монета переворачивала: -)