unicode
Znaki mogą składać się z wielu punktów kodowych
Szukaj…
Uwagi
Punkt kodu Unicode, który programiści często myślą o jednym znaku, często odpowiada temu, co użytkownik uważa za jeden znak. Czasami jednak „znak” składa się z wielu punktów kodowych, jak pokazują powyższe przykłady.
Oznacza to, że operacje takie jak przecinanie łańcucha lub uzyskiwanie znaku o danym indeksie mogą nie działać zgodnie z oczekiwaniami. Na przykład 4 th postaci napisu "Café"
jest 'e'
(bez akcentu). Podobnie przycięcie łańcucha do długości 4 usunie akcent.
Terminem technicznym dla takiej grupy punktów kodowych jest klaster grafemiczny . Zobacz UAX # 29: Segmentacja tekstu Unicode
Znaki diakrytyczne
Litera ze znakiem diakrytycznym może być reprezentowana przez literę oraz literę modyfikującą. Zwykle myślisz o é
jako jednym znaku, ale tak naprawdę to 2 punkty kodowe:
-
U+0065
- LATIN MAŁY LIST E -
U+0301
- ŁĄCZĄCY AKCES OSTRE
Podobnie ç
= c
+ ¸
i å
= a
+ ˚
połączone formy
Aby skomplikować sprawę, często istnieje także punkt kodowy dla złożonej formy:
"Café" = 'C' + 'a' + 'f' + 'e' + '´'
"Café" = 'C' + 'a' + 'f' + 'é'
Chociaż te ciągi wyglądają tak samo, nie są równe i nawet nie mają tej samej długości (odpowiednio 5 i 4).
Tekst Zalgo
Jest to coś, co nazywa się Zalgo Text, który popycha to do końca. Oto pierwsza grupa grafemowa z przykładu. Składa się z 15 punktów kodowych: litery łacińskiej H
i 14 znaków łączących.
H̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀
Chociaż nie pojawia się to w zwykłym tekście, pokazuje, że „znak” naprawdę może składać się z dowolnej liczby punktów kodowych
Emoji i flagi
Wiele emoji składa się z więcej niż jednego punktu kodowego.
- 🇯🇵: Flaga jest zdefiniowana jako para „liter oznaczeń symboli regionalnych” (🇯 + 🇵)
- 🙋🏿: Po niektórych emotikonach może następować modyfikator odcienia skóry: 🙋 + 🏿
- 😀︎ lub 😀️: Windows 10 pozwala określić, czy emoji ma być kolorowe, czy czarno-białe,
U+FE0E
selektor odmian (U+FE0E
lubU+FE0F
) - 👨👩👧👦: rodzina. Kodowane przez dołączenie emoji dla chłopca, dziewczynki, kobiety i mężczyzny (👦, 👧, 👩, 👨) wraz z łącznikami o zerowej szerokości (
U+200D
). Na platformach, które go obsługują, jest to renderowane jako emoji rodziny z dwójką dzieci.