Почему 'U+' используется для обозначения кодовой точки Юникода?



Почему кодовые точки Юникода отображаются как U+<codepoint>?



например, U+2202 обозначает символ .



Почему бы и нет U- (тире или дефис) или что-нибудь еще?

897   4  

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

    Ничего не найдено.