4 ответов:
символы "U+" -это Асцифицированная версия символа МНОГОСЕТЕВОГО объединения " ⊎ " U+228E (U-образный символ объединения со знаком плюс внутри него), который должен был символизировать Unicode как объединение наборов символов. Смотрите объяснение Кеннета Уистлера в списке рассылки Юникода.
стандарт Unicode нуждается в некоторой нотации для разговора о кодовых точках и именах символов. Он принял Конвенцию " U+", за которой следуют четыре или более шестнадцатеричных цифры, по крайней мере, до Стандарте Unicode, версия 2.0.0, опубликовано в 1996 году (источник: архивная копия PDF на веб-сайте консорциума Unicode).
нотация "U+" полезна. Это дает способ маркировки шестнадцатеричных цифр как кодовых точек Юникода, а не октетов, или неограниченные 16-битные количества или символы в других кодировках. Он хорошо работает в тексте. "У" предполагает, что "Юникод".
мое личное воспоминание с начала 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 объявлено: "коды символов Юникода имеют одинаковую ширину 16 бит."(стр. 2-3). Он установил свое соглашение о том, что " отдельное значение Юникода выражается как U+nnnn, где nnnn это четырехзначное число в шестнадцатеричной системе счисления" (стр. 1-5). Суррогатные значения были выделены, но коды символов не были определены выше U+FFFF, и там не было никакого упоминания о UTF-16 или UTF-32. Он использовал "U+" с четырьмя цифрами. Стандарт Unicode 3.0.0, опубликованный в 2000 году, определил UTF-16 (стр. 46-47) и обсудил кодовые точки U+010000 и выше. Он использовал "U+" с четырьмя цифрами в некоторых местах и с шестью цифрами в других местах. Самый твердый след, который я нашел был в Стандарте Unicode, версия 6.0.0, где таблица синтаксической нотации BNF определяет символы
U+HHHHиU-HHHHHHHH(p. 559).обозначение "U+" не является единственным соглашением для представления кодовых точек Юникода или кодовых единиц. Например,язык Python определяет следующие строковые литералы:
u'xyz'чтобы указать строку Юникода, последовательность символов Юникода'\uxxxx'чтобы указать строку с символом Юникода, обозначенным четырьмя шестнадцатеричными цифрами'\Uxxxxxxxx'для указания строки с обозначенным символом Юникода на восемь шестнадцатеричных цифр
Это зависит от того, о какой версии стандарта Unicode вы говорите. От Википедия:
более старые версии используемого стандарта похожие обозначения, но со слегка различные правила. Например, Unicode 3.0 использовал "U -", за которым следуют восемь цифр, и разрешил использовать "U+ только ровно четыре цифры укажите кодовую единицу, а не код точка.
это просто соглашение, чтобы показать, что значение Unicode. Немного похоже на ' 0x 'или' h ' для шестнадцатеричных значений (
0xB9илиB9h). Почему0xB9, а не0hB9(или&hB9или$B9)? Просто потому, что так монета перевернулась : -)
Comments