Dlaczego kody Unicode pojawiają się jako U+
<codepoint>
?Dlaczego funkcja "U +" jest używana do oznaczenia punktu kodu Unicode?
Na przykład U+2202
reprezentuje znak ∂.
Dlaczego nie U-
(kreska lub łącznik) czy coś jeszcze?
Dlaczego kody Unicode pojawiają się jako U+
<codepoint>
?Dlaczego funkcja "U +" jest używana do oznaczenia punktu kodu Unicode?
Na przykład U+2202
reprezentuje znak ∂.
Dlaczego nie U-
(kreska lub łącznik) czy coś jeszcze?
Znaki "U +" są wersją ASCII MULTISET UNION "⊎" U + 228E (symbol U-podobny symbol ze znakiem plus w środku), który miał symbolizować Unicode jako połączenie zestawów znaków. Zobacz Kenneth Whistler’s explanation in the Unicode mailing list.
To zależy od wersji standardu Unicode, o której mówisz. Od Wikipedia:
Starsze wersje standard stosowany podobnych zapisów, ale z nieco różnymi zasadami. Na przykład w Unicode 3.0 użyto "U-", po którym następowało osiem cyfr, a dozwolone było stosowanie "U +" tylko z dokładnie czterema cyframi do , wskazującymi jednostkę kodu, a nie kod punkt.
To tylko konwencja pokazująca, że wartość to kod Unicode. Trochę jak "0x" lub "h" dla wartości szesnastkowych (0xB9
lub B9h
). Dlaczego 0xB9
i nie 0hB9
(lub &hB9
lub $B9
)? Tylko dlatego, że tak wyglądała moneta :-)
Nie musieli nawet rzucać monetą: 'x' ('/ɛks/') brzmi bardziej jak" hex "niż' h' ('/ eɪtʃ /'). –
@ FrédéricHamidi ale VB używa '& hB9', Pascal używa' $ B9', Składnia składni Intel używa '0B9h' –
Standard Unicode wymaga trochę notacji, aby mówić o punktach kodowych i nazwach postaci. Przyjęła konwencję "U +", po której następują cztery lub więcej cyfr szesnastkowych co najmniej z okresu The Unicode Standard, version 2.0.0, opublikowanego w 1996 r. (Źródło: zarchiwizowana kopia PDF na stronie internetowej Unicode Consortium).
Notacja "U +" jest przydatna. Daje to możliwość oznaczania cyfr szesnastkowych jako punktów kodowych Unicode, zamiast oktetów, lub nieograniczonych 16-bitowych ilości lub znaków w innych kodowaniach. Działa dobrze w uruchomionym tekście. "U" sugeruje "Unicode".
Moje osobiste wspomnienia z dyskusji na temat oprogramowania Unicode z początków 1990 r. Polegają na tym, że konwencja "U +", po której następowały cztery cyfry szesnastkowe, była powszechna w erze Unicode 1.0 i Unicode 2.0. W tym czasie Unicode był postrzegany jako 16-bitowy system. Wraz z nadejściem Unicode 3.0 i kodowaniem znaków w punktach kodowych U + 010000 i wyższych, pojawiła się konwencja "U-", po której następuje sześć cyfr szesnastkowych, w celu podświetlenia dodatkowych dwóch cyfr w numerze. (A może było odwrotnie, zmiana z "U-" na "U +".) Z mojego doświadczenia wynika, że konwencja "U +" jest teraz dużo bardziej powszechna niż konwencja "U-", a niewiele osób korzysta z różnica między "U +" i "U-" wskazuje liczbę cyfr.
Nie udało mi się znaleźć dokumentacji zmiany z "U +" na "U-". Zarchiwizowane wiadomości z listy mailingowej z lat 90. powinny mieć na to dowody, ale nie mogę do nich w wygodny sposób wskazać. Standard Unicode 2.0 zadeklarował: "Kody znaków Unicode mają jednolitą szerokość 16 bitów." (str. 2-3). Ustanowił on swoją konwencję, że "indywidualna wartość Unicode jest wyrażana jako U + nnnn, gdzie nnnn jest czterocyfrową liczbą w zapisie heksadecymalnym" (s. 1-5).Wartości zastępcze zostały przydzielone, ale nie zdefiniowano kodów znaków powyżej U + FFFF i nie było wzmianki o UTF-16 lub UTF-32. Użyto "U +" z czterema cyframi. The Unicode Standard 3.0.0, opublikowany w 2000 r., Zdefiniowano UTF-16 (s. 46-47) i omówiono punkty kodowe U + 010000 i nowsze. Używał "U +" z czterema cyframi w niektórych miejscach i sześciocyfrowymi w innych miejscach. Najtrwalszy ślad, jaki znalazłem, to: The Unicode Standard, version 6.0.0, gdzie tabela z notacją składni BNF definiuje symbole U+HHHH
i U-HHHHHHHH
(s. 559).
Notacja "U +" nie jest jedyną konwencją do reprezentowania punktów kodowych Unicode lub jednostek kodowych. Na przykład, Python language defines the following string literals:
u'xyz'
wskazać ciąg Unicode, ciąg znaków Unicode'\uxxxx'
aby wskazać ciąg z Unicode oznaczony przez cztery cyfry szesnastkowe'\Uxxxxxxxx'
wskazać ciąg z znak Unicode oznaczony ośmioma cyframi heksadecymalnymi:Dzięki za wyjaśnienie @ Jim. To jest naprawdę pomocne. Przeglądałbym te połączone dokumenty. –
http://unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html także obsługuje U + HHHH i U-HHHHHHHH. –
To było pomocne odniesienie. Ale powód tej zmiany nie jest wspomniany. Czy to tylko kaprys komitetu? –
Nie widzę konwencji "U-" w [Standard Unicode 3.0.0] (http://www.unicode.org/versions/Unicode3.0.0/) lub [The Unicode Standard 2.0.0] (http://www.unicode.org/versions/Unicode2.0.0/) zarchiwizowane na stronie internetowej Unicode Consortium. Myślę, że Wikipedia jest tutaj błędna. –
Jest w przedmowie (http://www.unicode.org/versions/Unicode3.0.0/Preface.pdf), ale tylko krótko wspomniano. –