Чому 'U +' використовується для позначення кодової точки Unicode?


75

Чому кодові точки Unicode відображаються як ?U+<codepoint>

Наприклад, U+2202представляє символ .

Чому ні U-(тире чи дефіс) чи щось інше?

Відповіді:



15

Стандарт Unicode потребує деяких позначень для розмови про кодові точки та імена символів. Він прийняв конвенцію "U +", за якою слідують чотири або більше шістнадцяткові цифри, принаймні ще до стандарту Unicode , версія 2.0.0 , опублікованого в 1996 році (джерело: заархівована копія PDF на веб-сайті Консорціуму Unicode).

Позначення "U +" є корисним. Це дає можливість позначити шістнадцяткові цифри як кодові коди Юнікоду, замість октетів, необмежених 16-бітових величин або символів в інших кодуваннях. Це добре працює у запущеному тексті. "U" пропонує "Unicode".

Я особисто згадую про обговорення в галузі програмного забезпечення на початку 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 2.0 оголошений, «коди символів Unicode мають ширину рівномірної 16 біта.» (стор. 2-3). Він виклав свою домовленість, що "окреме значення Unicode виражається як 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 Standard , версія 6.0.0 , де таблиця нотації синтаксису BNF визначає символи U+HHHHта U-HHHHHHHH(стор. 559).

Позначення "U +" - не єдина умова для представлення кодових точок або одиниць коду Unicode. Наприклад, мова Python визначає такі рядкові літерали :

  • u'xyz' для позначення рядка Unicode, послідовності символів Unicode
  • '\uxxxx' для позначення рядка з символом Unicode, що позначається чотирма шістнадцятковими цифрами
  • '\Uxxxxxxxx' для позначення рядка з символом Unicode, позначеним вісьмома шістнадцятковими цифрами

Дякую за це пояснення @Jim. Це дуже корисно. Я б подивився на ці пов'язані документи.
Senthil Kumaran

1
unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html також підтримує U + HHHH та U-HHHHHHHH.
Шон Ковач

8

Це залежить від того, про яку версію стандарту Unicode ви говорите. З Вікіпедії :

У старих версіях стандарту використовувались подібні позначення, але з дещо іншими правилами. Наприклад, Unicode 3.0 використовував "U-", за яким слідують вісім цифр, і дозволив використовувати "U +" лише з чотирма цифрами для позначення кодової одиниці, а не кодової точки.


Це було корисним посиланням. Але причина такої зміни не згадується. Це була просто примха комітету?
Сентіл Кумаран

2
Я не бачу конвенції "U-" ні в Unicode Standard 3.0.0, ні в Unicode Standard 2.0.0, як заархівовано на веб-сайті Консорціуму Unicode. Я думаю, що Вікіпедія тут помиляється.
Jim DeLaHunt

1
Це в передмові ( unicode.org/versions/Unicode3.0.0/Preface.pdf ), але лише коротко згадується.
Шон Брайт,

4

Це лише умова, щоб показати, що значенням є Unicode. Трохи схоже на '0x' або 'h' для шістнадцяткових значень ( 0xB9або B9h). Чому 0xB9і ні 0hB9(чи &hB9чи $B9)? Просто тому, що так монета перевернута :-)


1
Їм навіть не довелося гортати монету: x( /ˈɛks/) звучить більше, hexніж h( /eɪtʃ/).
Фредерік Хаміді

1
@ FrédéricHamidi, але використовує VB, використовує &hB9Паскаль, використовує $B9збірку синтаксису Intel0B9h
phuclv,

Спасибі phuclv :-) Так, приклади були не випадковими :-)
Mihai Nita
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.