2009-08-13 16 views

Odpowiedz

7

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.

+0

To było pomocne odniesienie. Ale powód tej zmiany nie jest wspomniany. Czy to tylko kaprys komitetu? –

+2

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. –

+1

Jest w przedmowie (http://www.unicode.org/versions/Unicode3.0.0/Preface.pdf), ale tylko krótko wspomniano. –

4

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 :-)

+1

Nie musieli nawet rzucać monetą: 'x' ('/ɛks/') brzmi bardziej jak" hex "niż' h' ('/ eɪtʃ /'). –

+0

@ FrédéricHamidi ale VB używa '& hB9', Pascal używa' $ B9', Składnia składni Intel używa '0B9h' –

12

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:
+0

Dzięki za wyjaśnienie @ Jim. To jest naprawdę pomocne. Przeglądałbym te połączone dokumenty. –

+1

http://unicode.org/mail-arch/unicode-ml/y2005-m11/0060.html także obsługuje U + HHHH i U-HHHHHHHH. –

Powiązane problemy