Usimbaji wa Unicode. Unicode: kiwango cha usimbaji wa herufi

Unicode

Nyenzo kutoka Wikipedia - ensaiklopidia ya bure

Enda kwa: urambazaji, tafuta

Unicode (mara nyingi) au Unicode (Kiingereza Unicode) - kiwango usimbaji wa herufi, hukuruhusu kuwakilisha ishara za karibu zote zilizoandikwa lugha.

Kiwango kilichopendekezwa katika 1991 shirika lisilo la faida "Unicode Consortium" ( Kiingereza Unicode Muungano, Unicode Inc. ). Matumizi ya kiwango hiki hufanya iwezekane kusimba sana idadi kubwa herufi kutoka hati tofauti: Kichina kinaweza kuwepo katika hati za Unicode hieroglyphs, alama za hisabati, barua Alfabeti ya Kigiriki, Alfabeti ya Kilatini Na Alfabeti ya Kisirili, katika kesi hii kubadili inakuwa si lazima kurasa za kanuni.

Kiwango kina sehemu kuu mbili: seti ya wahusika wa ulimwengu wote ( Kiingereza UCS, seti ya wahusika wote) na familia ya usimbaji ( Kiingereza. UTF, umbizo la ubadilishaji wa Unicode) Seti ya herufi zima hubainisha ulinganifu wa herufi moja hadi moja kanuni- vipengele vya nafasi ya msimbo inayowakilisha nambari kamili zisizo hasi. Familia ya usimbaji inafafanua uwakilishi wa mashine ya mlolongo wa misimbo ya UCS.

Nambari katika kiwango cha Unicode imegawanywa katika maeneo kadhaa. Misimbo ya eneo U+0000 hadi U+007F ina vibambo vya kupiga ASCII na kanuni zinazolingana. Ifuatayo ni maeneo ya wahusika wa maandishi mbalimbali, alama za uakifishaji na alama za kiufundi. Baadhi ya misimbo imehifadhiwa kwa matumizi ya baadaye. Maeneo ya herufi yenye misimbo kutoka U+0400 hadi U+052F, kutoka U+2DE0 hadi U+2DFF, kutoka U+A640 hadi U+A69F yametengwa kwa herufi za Kisirili (ona. Kisirili katika Unicode).

    1 Masharti ya kuunda na ukuzaji wa Unicode

    Toleo 2 za Unicode

    3 Nafasi ya msimbo

    4 Mfumo wa kuweka misimbo

    5 Kurekebisha alama

    6 Aina za kuhalalisha

    • 6.1 Mifano

    7 Uandishi wa pande mbili

    Wahusika 8 walioangaziwa

    9 ISO/IEC 10646

    Mbinu 10 za uwasilishaji

    • 10.1 UTF-8

      10.2 Utaratibu wa Byte

      10.3 Unicode na usimbaji wa jadi

      10.4 Utekelezaji

    11 Mbinu za kuingiza

    • 11.1 Microsoft Windows

      11.2 Macintosh

      11.3 GNU/Linux

    Masuala 12 ya Unicode

    13 "Unicode" au "Unicode"?

    14 Tazama pia

Masharti ya uundaji na ukuzaji wa Unicode

Hadi mwisho Miaka ya 1980 Herufi 8-bit zikawa kiwango, wakati kulikuwa na usimbaji mwingi wa 8-bit, na mpya zilikuwa zikionekana kila wakati. Hii ilielezewa na upanuzi wa mara kwa mara wa anuwai ya lugha zinazotumika, na kwa hamu ya kuunda usimbaji ambao unaendana na zingine (mfano wa kawaida ni kuibuka. usimbaji mbadala kwa lugha ya Kirusi, kutokana na matumizi ya programu za Magharibi zilizoundwa kwa encoding CP437) Hii ilisababisha shida kadhaa:

    Tatizo" krakozyabr"(kuonyesha hati katika usimbaji usio sahihi): inaweza kutatuliwa ama kwa utekelezaji thabiti wa mbinu za kubainisha usimbaji uliotumiwa, au kwa kuanzisha usimbaji mmoja kwa wote.

    Tatizo la ukomo wa kuweka herufi: inaweza kutatuliwa ama kwa kubadili fonti ndani ya hati, au kwa kuanzisha usimbaji "pana". Kubadilisha fonti kumefanywa kwa muda mrefu wasindikaji wa maneno, na zilitumika mara nyingi fonti zilizo na usimbaji usio wa kawaida, kinachojulikana "fonti za dingbat" - kama matokeo, wakati wa kujaribu kuhamisha hati kwa mfumo mwingine, herufi zote zisizo za kawaida ziligeuka kuwa ujinga.

    Tatizo la kubadilisha usimbaji mmoja hadi mwingine: linaweza kutatuliwa ama kwa kuandaa majedwali ya ubadilishaji kwa kila jozi ya usimbaji, au kwa kutumia ubadilishaji wa kati hadi usimbaji wa tatu ambao ulijumuisha herufi zote za usimbaji wote.

    Shida ya kunakili fonti: jadi, kila usimbaji ulikuwa na fonti yake, hata ikiwa usimbaji huu kwa sehemu (au kabisa) uliambatana katika seti ya herufi: shida hii inaweza kutatuliwa kwa kutengeneza fonti "kubwa", ambazo herufi zinahitajika kwa a. usimbaji uliopewa ulichaguliwa kisha - hata hivyo, hii inahitaji uundaji wa sajili iliyounganishwa ya alama ili kuamua ni nini kinacholingana na nini.

Ilitambuliwa uumbaji wa lazima usimbaji mmoja "upana". Usimbaji na urefu wa kutofautiana herufi zinazotumiwa sana katika Asia ya Mashariki zilionekana kuwa ngumu sana kutumia, kwa hivyo iliamuliwa kutumia herufi za upana usiobadilika. Kutumia herufi 32-bit kulionekana kuwa ni ubadhirifu sana, kwa hivyo iliamuliwa kutumia herufi 16-bit.

Kwa hivyo, toleo la kwanza la Unicode lilikuwa usimbaji wa herufi fasta wa bits 16, kwa hivyo jumla ya nambari ilikuwa 2 16 (65,536). Hapa ndipo mazoezi ya kuashiria herufi zilizo na tarakimu nne za heksadesimali hutoka (kwa mfano, U+04F0). Wakati huo huo, ilipangwa kusimba sio herufi zote zilizopo kwenye Unicode, lakini zile tu ambazo ni muhimu katika matumizi ya kila siku. Alama zilizotumika mara chache sana zilipaswa kuwekwa kwenye "eneo la matumizi ya kibinafsi", ambalo awali lilikuwa na misimbo U+D800...U+F8FF. Ili kutumia Unicode pia kama kiunga cha kati wakati wa kubadilisha usimbaji tofauti kuwa kila mmoja, ilijumuisha herufi zote zinazowakilishwa katika usimbaji wote unaojulikana zaidi.

Baadaye, hata hivyo, iliamuliwa kusimba wahusika wote na, kwa hiyo, kupanua kwa kiasi kikubwa eneo la msimbo. Wakati huo huo, nambari za wahusika zilianza kutazamwa sio kama maadili ya 16-bit, lakini kama nambari za dhahania ambazo zinaweza kuwakilishwa kwenye kompyuta na seti. njia tofauti(sentimita. Mbinu za uwasilishaji).

Kwa kuwa katika idadi ya mifumo ya kompyuta (kwa mfano, Windows NT ) vibambo 16 vilivyowekwa tayari vilitumika kama usimbaji chaguo-msingi, iliamuliwa kusimba herufi zote muhimu tu ndani ya nafasi 65,536 za kwanza (kinachojulikana Kiingereza msingi lugha nyingi ndege, BMP) Nafasi iliyobaki inatumika kwa "wahusika wa ziada" ( Kiingereza ziada wahusika): mifumo ya uandishi wa lugha zilizotoweka au zinazotumika mara chache sana Kichina hieroglyphs, alama za hisabati na muziki.

Ili kuendana na mifumo ya zamani ya 16-bit, mfumo ulivumbuliwa UTF-16, ambapo nafasi 65,536 za kwanza, bila kujumuisha nafasi katika safu U+D800...U+DFFF, zinawakilishwa moja kwa moja kama nambari za biti 16, na zilizosalia zinawakilishwa kama "jozi mbadala" (kipengele cha kwanza cha jozi kutoka kwa mbalimbali U+D800...U+DBFF , kipengele cha pili cha jozi kutoka eneo U+DC00…U+DFFF). Kwa jozi mbadala, sehemu ya nafasi ya msimbo (nafasi 2048) iliyohifadhiwa hapo awali kwa ajili ya "wahusika kwa matumizi ya kibinafsi" ilitumiwa.

Kwa kuwa UTF-16 inaweza tu kuonyesha vibambo 2 20 + 2 16 -2048 (1 112 064), nambari hii ilichaguliwa kama thamani ya mwisho ya nafasi ya msimbo wa Unicode.

Ingawa eneo la msimbo wa Unicode lilipanuliwa zaidi ya 2 16 mapema kama toleo la 2.0, herufi za kwanza katika eneo la "juu" hazikuwekwa hadi toleo la 3.1.

Jukumu la usimbaji huu katika sekta ya wavuti linakua kila mara; mwanzoni mwa 2010, sehemu ya tovuti zinazotumia Unicode ilikuwa karibu 50%.

Matoleo ya Unicode

Jedwali la wahusika la mfumo wa Unicode linapobadilika na kujazwa tena na matoleo mapya ya mfumo huu yanatolewa - na kazi hii inaendelea, kwani mwanzoni mfumo wa Unicode ulijumuisha Ndege 0 pekee - nambari za baiti mbili - hati mpya pia hutolewa. ISO. Mfumo wa Unicode upo katika jumla ya matoleo yafuatayo:

    1.1 (inatii viwango vya ISO/IEC 10646-1: 1993 ), kiwango cha 1991-1995.

    2.0, 2.1 (kiwango sawa cha ISO/IEC 10646-1:1993 pamoja na nyongeza: "Marekebisho" 1 hadi 7 na "Technical Corrigenda" 1 na 2), kiwango cha 1996.

    3.0 (ISO/IEC 10646-1:2000 kiwango), 2000 kiwango.

    3.1 (viwango vya ISO/IEC 10646-1:2000 na ISO/IEC 10646-2:2001), kiwango cha 2001.

    3.2 kiwango 2002.

    4.0, kiwango 2003 .

    4.01, kiwango 2004 .

    4.1 kiwango 2005 .

    5.0, kiwango 2006 .

    5.1 kiwango 2008 .

    5.2 kiwango 2009 .

    6.0, kiwango 2010 .

    6.1 kiwango 2012 .

    6.2 kiwango 2012 .

Nafasi ya nambari

Ingawa nukuu za UTF-8 na UTF-32 huruhusu hadi nafasi 2,31 (2,147,483,648) kusimba, iliamuliwa kutumia 1,112,064 pekee kwa uoanifu na UTF-16. Walakini, hata hii inatosha zaidi kwa sasa - toleo la 6.0 linatumia chini ya nafasi za nambari 110,000 (mchoro 109,242 na alama zingine 273).

Nafasi ya nambari imegawanywa katika 17 ndege Wahusika 2 16 (65536) kila moja. Ndege ya chini inaitwa msingi, ina alama za maandishi yanayotumiwa sana. Ndege ya kwanza hutumiwa hasa kwa maandishi ya kihistoria, ya pili - kwa hieroglyphs zinazotumiwa mara chache KKYA, ya tatu imehifadhiwa kwa herufi za Kichina za zamani . Ndege 15 na 16 zimetengwa kwa matumizi ya kibinafsi.

Ili kuonyesha Wahusika wa Unicode nukuu ya fomu "U+" inatumiwa xxx"(kwa misimbo 0...FFFF), au "U+ xxxx"(kwa misimbo 10000...FFFF), au "U+ xxxxx"(kwa misimbo 100000...10FFFF), wapi xxx - hexadecimal nambari. Kwa mfano, herufi "I" (U+044F) ina msimbo 044F 16 = 1103 10 .

Mfumo wa kuweka msimbo

Mfumo wa Usimbaji wa Universal (Unicode) ni seti ya alama za picha na njia ya kuzisimba kompyuta usindikaji wa data ya maandishi.

Alama za picha ni alama ambazo zina picha inayoonekana. Vibambo vya mchoro vinalinganishwa na vibambo vya kudhibiti na vibambo vya uumbizaji.

Alama za picha ni pamoja na vikundi vifuatavyo:

  • alama za uakifishaji;

    wahusika maalum ( hisabati, kiufundi, itikadi na kadhalika.);

    watenganishaji.

Unicode ni mfumo wa uwakilishi wa mstari wa maandishi. Herufi zilizo na maandishi ya ziada au vipengee vya usajili vinaweza kuwakilishwa kama mfuatano wa misimbo iliyoundwa kulingana na sheria fulani (herufi mchanganyiko) au kama herufi moja (lahaja ya monolithic, herufi iliyotungwa awali).

Kurekebisha wahusika

Uwakilishi wa ishara “И” (U+0419) kama herufi msingi “И” (U+0418) na herufi ya kurekebisha “ ̆” (U+0306)

Herufi za mchoro katika Unicode zimegawanywa katika kupanuliwa na zisizo kupanuliwa (isiyo na upana). Inapoonyeshwa, herufi zisizopanuliwa hazichukui nafasi ndani mstari. Hizi ni pamoja na, haswa, alama za lafudhi na zingine diacritics. Alama zote mbili zilizopanuliwa na zisizopanuliwa zina misimbo yao wenyewe. Alama zilizopanuliwa zinaitwa vinginevyo alama za msingi ( Kiingereza msingi wahusika), na zisizopanuliwa - kurekebisha ( Kiingereza kuchanganya wahusika); Aidha, mwisho huo hauwezi kukutana kwa kujitegemea. Kwa mfano, herufi "á" inaweza kuwakilishwa kama mfuatano wa herufi msingi "a" (U+0061) na herufi ya kurekebisha "́" (U+0301), au kama herufi monolithic "á" (U+ 00C1).

Aina maalum ya vibambo vya kurekebisha ni viteuzi vya lahaja vya mtindo ( Kiingereza tofauti wateuzi) Zinaathiri tu alama hizo ambazo anuwai kama hizo zinafafanuliwa. Katika toleo la 5.0, chaguzi za mtindo zinafafanuliwa kwa idadi ya alama za hisabati, kwa alama za jadi Alfabeti ya Kimongolia na kwa wahusika Barua ya mraba ya Kimongolia.

Fomu za kuhalalisha

Kwa kuwa wahusika sawa wanaweza kuwakilishwa na nambari tofauti, ambazo wakati mwingine hufanya usindikaji kuwa mgumu, kuna michakato ya urekebishaji iliyoundwa ili kupunguza maandishi kwa fomu fulani ya kawaida.

Kiwango cha Unicode kinafafanua aina 4 za urekebishaji wa maandishi:

    Fomu ya kuhalalisha D (NFD) ni mtengano wa kisheria. Katika mchakato wa kuleta maandishi katika fomu hii, wahusika wote wa kiwanja hubadilishwa kwa kurudia na wale kadhaa wa kiwanja, kwa mujibu wa meza za mtengano.

    Aina ya kuhalalisha ya C (NFC) ni mtengano wa kisheria unaofuatwa na utunzi wa kanuni. Kwanza, maandishi yamepunguzwa kuwa fomu D, baada ya hapo utunzi wa kisheria unafanywa - maandishi yanashughulikiwa kutoka mwanzo hadi mwisho na. sheria zifuatazo:

    • Alama ya S ni awali, ikiwa ina darasa la urekebishaji sifuri katika msingi wa herufi ya Unicode.

      Katika mfuatano wowote wa herufi zinazoanza na herufi ya mwanzo S, herufi C imezuiwa kutoka kwa S ikiwa na ikiwa tu kati ya S na C kuna herufi yoyote B ambayo ama ni herufi ya mwanzo au ina darasa sawa au kubwa zaidi la urekebishaji kuliko C. Hii ni kanuni inatumika tu kwa masharti ambayo yamepitia mtengano wa kisheria.

      Msingi Mchanganyiko ni herufi ambayo ina mtengano wa kisheria katika msingi wa herufi za Unicode (au mtengano wa kisheria wa hangul na hajajumuishwa orodha ya vighairi).

      Herufi X inaweza kujumuisha herufi Y ikiwa tu kuna mchanganyiko wa Z ambao ni sawa na mfuatano huo. .

      Ikiwa ishara inayofuata C haijazuiwa na alama ya mwisho ya msingi iliyokutana na L na inaweza kuwa msingi kwa mafanikio pamoja nayo, basi L inabadilishwa na mchanganyiko wa L-C, na C huondolewa.

    Fomu ya Kurekebisha KD (NFKD) ni mtengano sambamba. Inapotumwa kwa fomu hii, vibambo vyote vilivyojumuishwa hubadilishwa kwa kutumia ramani za mtengano za kisheria za Unicode na ramani zinazooana za mtengano, na matokeo yake huwekwa katika mpangilio wa kisheria.

    Fomu ya Kurekebisha KC (NFKC) - mtengano unaoendana na kufuatiwa na kisheria utungaji.

Maneno "muundo" na "mtengano" inamaanisha, mtawaliwa, unganisho au mtengano wa alama katika sehemu zao za sehemu.

Mifano

Maandishi asilia

\u0410, \u0401, \u0419

\u0410, \u0415\u0308, \u0418\u0306

\u0410, \u0401, \u0419

Uandishi wa pande mbili

Kiwango cha Unicode inasaidia lugha zilizoandikwa kwa mwelekeo wa uandishi kutoka kushoto kwenda kulia ( Kiingereza kushoto- kwa- haki, LTR), na kwa maandishi kutoka kulia kwenda kushoto ( Kiingereza haki- kwa- kushoto, RTL) - Kwa mfano, Kiarabu Na Myahudi barua. Katika matukio yote mawili, wahusika huhifadhiwa kwa utaratibu wa "asili"; kuonyesha kwao kwa kuzingatia mwelekeo sahihi barua hutolewa na maombi.

Kwa kuongeza, Unicode inasaidia maandishi yaliyounganishwa ambayo huchanganya vipande na maelekezo tofauti ya kuandika. Kipengele hiki kinaitwa pande mbili (Kiingereza ya pande mbili maandishi, BiDi) Baadhi ya vichakataji maandishi vilivyorahisishwa (kwa mfano, in simu ya kiganjani) inaweza kusaidia Unicode, lakini isiwe na usaidizi wa pande mbili. Wahusika wote wa Unicode wamegawanywa katika makundi kadhaa: yale yaliyoandikwa kutoka kushoto kwenda kulia, yale yaliyoandikwa kutoka kulia kwenda kushoto, na yale yaliyoandikwa kwa mwelekeo wowote. Alama za kitengo cha mwisho (zaidi alama za uakifishaji) inapoonyeshwa, chukua mwelekeo wa maandishi yanayozunguka.

Wahusika walioangaziwa

Makala kuu: Herufi zinazowakilishwa katika Unicode

Mchoro wa ndege ya kumbukumbu ya Unicode, ona maelezo

Unicode inajumuisha karibu zote za kisasa kuandika, ikiwa ni pamoja na:

    Kiarabu,

    Kiarmenia,

    Kibengali,

    Kiburma,

    Glagolitic,

    Kigiriki,

    Kijojiajia,

    Devanagari,

    Myahudi,

    Alfabeti ya Kisirili,

    Kichina(Herufi za Kichina zinatumika kikamilifu katika Kijapani, na pia mara chache sana ndani Kikorea),

    Kikoptiki,

    Khmer,

    Kilatini,

    Kitamil,

    Kikorea (Hangul),

    Cherokee,

    wa Ethiopia,

    Kijapani(ambayo inajumuisha isipokuwa Wahusika wa Kichina pia alfabeti ya silabi),

na wengine.

Maandishi mengi ya kihistoria yameongezwa kwa madhumuni ya kitaaluma, pamoja na: Runi za Kijerumani, runes za kale za turkic, Kigiriki cha kale, Hieroglyphs za Misri, kikabari, kuandika Mayan, Alfabeti ya Etruscan.

Unicode hutoa anuwai ya hisabati Na ya muziki wahusika, na vile vile picha za picha.

Walakini, Unicode kwa ujumla haijumuishi nembo za kampuni na bidhaa, ingawa zinapatikana katika fonti (kwa mfano, nembo. Apple katika usimbaji MacRoman(0xF0) au nembo Windows katika fonti ya Wingdings (0xFF)). Katika fonti za Unicode, nembo zinapaswa kuwekwa tu katika eneo maalum la herufi.

ISO/IEC 10646

Unicode Consortium inafanya kazi kwa karibu na kikundi kazi cha ISO/IEC/JTC1/SC2/WG2 ambacho kinatengeneza Kiwango cha Kimataifa cha 10646 ( ISO/IEC 10646). Kuna maingiliano kati ya kiwango cha Unicode na ISO/IEC 10646, ingawa kila kiwango kinatumia istilahi na mfumo wake wa uhifadhi wa nyaraka.

Ushirikiano kati ya Muungano wa Unicode na Shirika la Viwango la Kimataifa ( Kiingereza Shirika la Kimataifa la Viwango, ISO) ilianza ndani 1991 mwaka. KATIKA 1993 mwaka ISO imetoa kiwango cha DIS 10646.1. Ili kusawazisha nayo, Consortium iliidhinisha toleo la kawaida la Unicode 1.1, ambalo lilijumuisha herufi za ziada kutoka DIS 10646.1. Kama matokeo, maana za herufi zilizosimbwa katika Unicode 1.1 na DIS 10646.1 ziliambatana kabisa.

Baadaye, ushirikiano kati ya mashirika hayo mawili uliendelea. KATIKA 2000 Kiwango cha Unicode 3.0 kimesawazishwa na ISO/IEC 10646-1:2000. Toleo lijalo la tatu la ISO/IEC 10646 litalandanishwa na Unicode 4.0. Labda maelezo haya yatachapishwa kama kiwango kimoja.

Sawa na umbizo la UTF-16 na UTF-32 katika kiwango cha Unicode, kiwango cha ISO/IEC 10646 pia kina aina mbili za msingi za usimbaji wa herufi: UCS-2 (baiti 2 kwa kila herufi, sawa na UTF-16) na UCS-4. (Baiti 4 kwa kila herufi, sawa na UTF-32). UCS maana yake oktet nyingi za ulimwengu wote(baiti nyingi) seti ya herufi iliyosimbwa (Kiingereza zima nyingi- pweza kificho tabia kuweka) UCS-2 inaweza kuchukuliwa kuwa kitengo kidogo cha UTF-16 (UTF-16 bila jozi mbadala), na UCS-4 ni kisawe cha UTF-32.

Mbinu za uwasilishaji

Unicode ina aina kadhaa za uwakilishi ( Kiingereza Umbizo la ubadilishaji wa Unicode, UTF): UTF-8, UTF-16(UTF-16BE, UTF-16LE) na UTF-32 (UTF-32BE, UTF-32LE). Fomu ya uwakilishi ya UTF-7 pia ilitengenezwa kwa ajili ya upitishaji wa chaneli zenye-bit saba, lakini kutokana na kutopatana na ASCII haijaenea na haijajumuishwa katika kiwango. Aprili 1 2005 aina mbili za vichekesho vya uwakilishi zilipendekezwa: UTF-9 na UTF-18 ( RFC 4042).

KATIKA Microsoft Windows NT na mifumo ya msingi juu yake Windows 2000 Na Windows XP zaidi kutumika Fomu ya UTF-16LE. KATIKA UNIX-sawa mifumo ya uendeshaji GNU/Linux, BSD Na Mac OS X fomu inayokubalika ni UTF-8 kwa faili na UTF-32 au UTF-8 kwa kuchakata vibambo ndani kumbukumbu ya ufikiaji bila mpangilio.

Punycode- aina nyingine ya mfuatano wa usimbaji wa herufi za Unicode katika kinachojulikana kama mfuatano wa ACE, ambao unajumuisha herufi za alphanumeric, kama inavyoruhusiwa katika majina ya kikoa.

Makala kuu: UTF-8

UTF-8 ni kiwakilishi cha Unicode ambayo hutoa uoanifu bora zaidi na mifumo ya zamani iliyotumia herufi 8-bit. Maandishi yenye vibambo vilivyo chini ya 128 pekee yanabadilishwa kuwa UTF-8 yanapoandikwa maandishi wazi ASCII. Kinyume chake, katika UTF-8 maandishi yoyote kwaheri yenye thamani chini ya 128 inawakilisha herufi ya ASCII yenye msimbo sawa. Herufi zilizobaki za Unicode zinawakilishwa kama mlolongo wa kuanzia baiti 2 hadi 6 kwa urefu (kwa kweli, hadi ka 4 tu, kwani Unicode haina herufi zilizo na nambari kubwa kuliko 10FFFF, na hakuna mipango ya kuzitambulisha katika siku zijazo. ), ambayo byte ya kwanza daima ni 11xxxxxx, na wengine - 10xxxxxx.

Umbizo la UTF-8 lilivumbuliwa Septemba 2 1992 Ken Thompson Na Rob Pike na kutekelezwa katika Mpango 9 . Sasa kiwango cha UTF-8 kimewekwa rasmi katika hati RFC 3629 na ISO/IEC 10646 Kiambatisho D.

Herufi za UTF-8 zinatokana na Unicode kwa njia ifuatayo:

0x00000000 - 0x0000007F: 0xxxxxxx

0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Kinadharia inawezekana, lakini pia haijajumuishwa katika kiwango:

0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Ingawa UTF-8 hukuruhusu kutaja herufi sawa kwa njia kadhaa, ile fupi tu ndiyo sahihi. Fomu zingine zinapaswa kukataliwa kwa sababu za usalama.

Utaratibu wa Byte

Katika mtiririko wa data wa UTF-16, byte ya juu inaweza kuandikwa ama kabla ya baiti ya chini ( Kiingereza UTF-16 kidogo-endian), au baada ya mtoto mdogo ( Kiingereza. UTF-16 yenye mwelekeo mkubwa) Vile vile, kuna chaguo mbili kwa encoding nne-byte - UTF-32LE na UTF-32BE.

Kuamua umbizo la uwakilishi wa Unicode, ifuatayo imeandikwa hadi mwanzo wa faili ya maandishi: Sahihi- ishara U+FEFF ( nafasi isiyo ya kuvunja upana wa sifuri), pia huitwa alama ya utaratibu wa byte (Kiingereza kwaheri agizo alama, BOM ) Hii inafanya uwezekano wa kutofautisha UTF-16LE na UTF-16BE kwa kuwa herufi ya U+FFFE haipo. Njia hii pia wakati mwingine hutumiwa kuashiria umbizo la UTF-8, ingawa dhana ya mpangilio wa baiti haitumiki kwa umbizo hili. Faili zinazofuata mkusanyiko huu huanza na mfuatano wa baiti ufuatao:

Kwa bahati mbaya, njia hii haitofautishi kwa uhakika kati ya UTF-16LE na UTF-32LE, kwani herufi U+0000 inaruhusiwa na Unicode (ingawa maandishi halisi huanza nayo mara chache).

UTF-16 na UTF-32 faili zilizosimbwa ambazo hazina BOM lazima ziwe katika mpangilio wa baiti kubwa ( unicode.org).

Unicode na usimbaji wa jadi

Kuanzishwa kwa Unicode kulisababisha mabadiliko katika mbinu ya usimbaji wa jadi wa 8-bit. Ikiwa mapema encoding ilitajwa na font, sasa inatajwa na meza ya mawasiliano kati ya encoding iliyotolewa na Unicode. Kwa kweli, usimbaji wa 8-bit umekuwa aina ya uwakilishi wa kikundi kidogo cha Unicode. Hii imefanya iwe rahisi zaidi kuunda programu zinazohitaji kufanya kazi na encodings nyingi tofauti: sasa, ili kuongeza usaidizi wa encoding nyingine, unahitaji tu kuongeza jedwali lingine la uongofu la Unicode.

Kwa kuongeza, fomati nyingi za data hukuruhusu kuingiza herufi zozote za Unicode, hata ikiwa hati imeandikwa katika usimbaji wa zamani wa 8-bit. Kwa mfano, katika HTML unaweza kutumia kanuni na ampersand.

Utekelezaji

Mifumo mingi ya uendeshaji ya kisasa hutoa kiwango fulani cha usaidizi wa Unicode.

Katika mifumo ya uendeshaji ya familia Windows NT Kwa uwakilishi wa ndani wa majina ya faili na mifuatano mingine ya mfumo, usimbaji wa UTF-16LE wa double-byte hutumiwa. Simu za mfumo zinazokubali vigezo vya kamba huja katika aina za baiti moja na mbili-baiti. Kwa maelezo zaidi, angalia makala. .

UNIX-mifumo ya uendeshaji inayofanana, ikiwa ni pamoja na GNU/Linux, BSD, Mac OS X, tumia usimbaji wa UTF-8 kuwakilisha Unicode. Programu nyingi zinaweza kushughulikia UTF-8 kana kwamba ni usimbaji wa kitamaduni wa baiti moja, bila kujali ukweli kwamba herufi inawakilishwa kama baiti kadhaa mfululizo. Kufanya kazi na wahusika tofauti kamba kawaida husimbwa kwa UCS-4 ili kila herufi ilingane na neno la mashine.

Mojawapo ya utekelezaji wa kwanza wa kibiashara uliofanikiwa wa Unicode ilikuwa mazingira ya programu Java. Kimsingi iliacha uwakilishi wa 8-bit wa wahusika na kupendelea 16-bit. Suluhisho hili liliongeza utumiaji wa kumbukumbu, lakini lilituruhusu kurudisha uondoaji muhimu kwa programu: herufi moja ya kiholela (aina ya char). Hasa, programu inaweza kufanya kazi na kamba kana kwamba ni safu rahisi. Kwa bahati mbaya, mafanikio hayakuwa ya mwisho, Unicode ilizidi kikomo cha 16-bit na kwa toleo la J2SE 5.0 tabia ya kiholela ilianza tena kuchukua. nambari inayobadilika vitengo vya kumbukumbu - char moja au mbili (tazama. wanandoa mbadala).

Lugha nyingi za programu sasa zinatumia mifuatano ya Unicode, ingawa uwakilishi wao unaweza kutofautiana kulingana na utekelezaji.

Mbinu za kuingiza

Kwa kuwa hakuna mpangilio wa kibodi haiwezi kuruhusu herufi zote za Unicode kuingizwa mara moja, kutoka mifumo ya uendeshaji Na programu za maombi Usaidizi wa mbinu mbadala za kuingiza herufi za Unicode kiholela inahitajika.

Microsoft Windows

Makala kuu: Unicode kwenye mifumo ya uendeshaji ya Microsoft

Kuanzia na Windows 2000, shirika la Charmap.exe linaonyesha wahusika wote kwenye OS na hukuruhusu kunakili kwa ubao wa kunakili. Jedwali sawa linapatikana, kwa mfano, ndani Microsoft Word.

Wakati mwingine unaweza kupiga simu hexadecimal kanuni, bonyeza Alt+X, na msimbo utabadilishwa na herufi inayolingana, kwa mfano, in WordPad,Microsoft Word. Katika wahariri, Alt+X pia hufanya ubadilishaji wa kinyume.

Katika programu nyingi za MS Windows, ili kupata herufi ya Unicode, unahitaji kubonyeza kitufe cha Alt na chapa thamani ya desimali ya msimbo wa mhusika. vitufe vya nambari. Kwa mfano, michanganyiko ya Alt+0171 (“) na Alt+0187 (“”) itafaa wakati wa kuandika maandishi ya Kisirili. Michanganyiko ya Alt+0133 (…) na Alt+0151 (-) pia inavutia.

Macintosh

KATIKA MacOS 8.5 au zaidi matoleo ya baadaye Mbinu ya ingizo inayoitwa "Unicode Hex Input" inatumika. Wakati wa kubanwa Kitufe cha chaguo unahitaji kupiga nambari ya heksadesimali yenye tarakimu nne ya herufi inayohitajika. Njia hii hukuruhusu kuingiza herufi zilizo na nambari kubwa kuliko U+FFFF kwa kutumia jozi mbadala; jozi hizo zitabadilishwa moja kwa moja na wahusika moja na mfumo wa uendeshaji. Kabla ya matumizi, mbinu hii ya ingizo lazima iamilishwe katika sehemu inayofaa ya mipangilio ya mfumo kisha ichaguliwe kama mbinu ya sasa ya kuingiza data kwenye menyu ya kibodi.

Kuanzia na Mac OS X 10.2, pia kuna programu ya "Paleti ya Tabia" ambayo hukuruhusu kuchagua herufi kutoka kwa jedwali ambalo unaweza kuchagua herufi kutoka kwa kizuizi maalum au herufi zinazoungwa mkono na fonti maalum.

GNU/Linux

KATIKA Mbilikimo Pia kuna matumizi ya "Jedwali la Alama" ambayo inakuwezesha kuonyesha alama za mfumo fulani wa kuzuia au kuandika na hutoa uwezo wa kutafuta kwa jina au maelezo ya ishara. Wakati kanuni ya tabia inayotakiwa inajulikana, inaweza kuingizwa kwa mujibu wa kiwango ISO 14755: huku ukishikilia funguo za Ctrl + ⇧ Shift ingia msimbo wa heksadesimali(kuanzia na toleo fulani la GTK+, kuingiza msimbo lazima kutanguliwa na kubonyeza kitufe "U") Msimbo wa heksadesimali unaoweka unaweza kuwa na urefu wa biti 32, hivyo kukuruhusu kuingiza herufi yoyote ya Unicode bila kutumia jozi mbadala.

Kiwango hicho kilipendekezwa mnamo 1991 na shirika lisilo la faida la Unicode Consortium (Unicode Inc.). Utumiaji wa kiwango hiki hukuruhusu kusimba idadi kubwa sana ya herufi kutoka kwa maandishi tofauti: Hati za Unicode zinaweza kuwa na herufi za Kichina, alama za hisabati, herufi za alfabeti ya Kigiriki, alfabeti ya Kilatini na Kisirili, na kubadili kurasa za msimbo inakuwa sio lazima.

Kiwango kina sehemu kuu mbili: seti ya herufi zima (UCS) na familia ya usimbaji (UTF, umbizo la mabadiliko la Unicode). Seti ya herufi zima hubainisha mawasiliano ya moja kwa moja kati ya herufi na misimbo - vipengele vya nafasi ya msimbo inayowakilisha nambari kamili zisizo hasi. Familia ya usimbaji inafafanua uwakilishi wa mashine ya mlolongo wa misimbo ya UCS.

Kiwango cha Unicode kilitengenezwa ili kuunda usimbaji wa herufi moja kwa lugha zote za kisasa na nyingi za kale zilizoandikwa. Kila herufi katika kiwango hiki imesimbwa kwa biti 16, ambayo inaruhusu kufunika idadi kubwa zaidi ya herufi kuliko usimbaji wa biti 8 uliokubaliwa hapo awali. Moja zaidi tofauti muhimu Unicode inatofautiana na mifumo mingine ya usimbuaji kwa kuwa haipei tu nambari ya kipekee kwa kila herufi, lakini pia inafafanua. sifa mbalimbali mhusika huyu, kwa mfano:

Aina ya wahusika (herufi kubwa, herufi ndogo, nambari, alama za uakifishaji, n.k.);

Sifa za tabia (onyesha kutoka kushoto kwenda kulia au kulia kwenda kushoto, nafasi, kuvunja mstari, nk);

Herufi kubwa au ndogo zinazolingana (kwa herufi ndogo na herufi kubwa kwa mtiririko huo);

Husika thamani ya nambari(kwa herufi za kidijitali).

Msimbo mzima wa nambari kutoka 0 hadi FFFF umegawanywa katika vikundi vidogo kadhaa, ambavyo kila moja inalingana na alfabeti ya lugha au kikundi. wahusika maalum, sawa katika kazi zao. Mchoro ulio hapa chini una orodha ya jumla ya seti ndogo za Unicode 3.0 (Mchoro 2).

Kielelezo cha 2

Kiwango cha Unicode ni msingi wa kuhifadhi maandishi katika mifumo mingi ya kisasa ya kompyuta. Hata hivyo, haioani na itifaki nyingi za Intaneti kwa sababu misimbo yake inaweza kuwa na thamani zozote za baiti, na kwa kawaida itifaki hutumia baiti 00 - 1F na FE - FF kama baiti za huduma. Ili kufikia utangamano, miundo kadhaa ya mabadiliko ya Unicode (UTFs, Unicode Transformation Formats) imetengenezwa, ambayo UTF-8 ndiyo ya kawaida leo. Umbizo hili linafafanua sheria zifuatazo za kubadilisha kila msimbo wa Unicode kuwa seti ya baiti (moja hadi tatu) zinazofaa kusafirishwa kwa itifaki za Mtandao.


Hapa x,y,z inaashiria biti msimbo wa chanzo, ambayo lazima irudishwe kwa kuanzia na ile isiyo muhimu na iingizwe kwenye baiti za matokeo kutoka kulia kwenda kushoto hadi nafasi zote zilizobainishwa zijazwe.

Uendelezaji zaidi wa kiwango cha Unicode unahusishwa na kuongeza kwa ndege za lugha mpya, i.e. herufi katika safu 10000 - 1FFFF, 20000 - 2FFFF, n.k., ambapo inapaswa kujumuisha usimbaji wa hati za lugha zilizokufa ambazo hazijajumuishwa kwenye jedwali hapo juu. Ili kusimba herufi hizi za ziada, ilitengenezwa muundo mpya UTF-16.

Kwa hivyo kuna njia 4 kuu za kusimba baiti za Unicode:

UTF-8: herufi 128 zilizosimbwa kwa baiti moja (umbizo la ASCII), herufi 1920 zilizosimbwa katika baiti 2 ((Kirumi, Kigiriki, Kisiriliki, Kikoptiki, Kiarmenia, Kiebrania, herufi za Kiarabu), herufi 63488 zilizosimbwa katika baiti 3 (Kichina, Kijapani n.k. .) Herufi 2,147,418,112 zilizosalia (bado hazijatumika) zinaweza kusimba kwa baiti 4, 5 au 6.

UCS-2: Kila herufi inawakilishwa na baiti 2. Usimbaji huu unajumuisha tu herufi 65,535 za kwanza kutoka kwa umbizo la Unicode.

UTF-16: Kiendelezi cha UCS-2, kina herufi 1,114,112 za umbizo la Unicode. Herufi 65,535 za kwanza zinawakilishwa na baiti 2, zilizobaki na baiti 4.

USC-4: Kila herufi imesimbwa kwa baiti 4.

Unicode ni kiwango cha kimataifa usimbaji wa herufi zinazoruhusu maandishi kuonyeshwa mara kwa mara kwenye kompyuta yoyote duniani, bila kujali lugha ya mfumo inayotumika kwenye kompyuta.

Misingi

Ili kuelewa jedwali la herufi za Unicode ni la nini, hebu kwanza tuelewe utaratibu wa kuonyesha maandishi kwenye skrini ya kufuatilia. Kompyuta, kama tunavyojua, huchakata taarifa zote katika umbo la dijitali, na lazima ionyeshe kwa mchoro kwa utambuzi sahihi wa binadamu. Kwa hivyo, ili tuweze kusoma maandishi haya, tunahitaji kutatua angalau shida mbili:

  • Encode herufi zilizochapishwa katika fomu ya digital.
  • Kutoa mfumo wa uendeshaji na uwezo wa kufanana na fomu ya digital na wahusika wa vector, kwa maneno mengine, kupata barua sahihi.

Usimbaji wa kwanza

ASCII ya Amerika inachukuliwa kuwa babu wa usimbaji wote. Ilielezea njia iliyotumika katika Lugha ya Kiingereza Alfabeti ya Kilatini yenye alama za uakifishaji na nambari za Kiarabu. Ilikuwa ni alama 128 zilizotumiwa ndani yake ambazo zikawa msingi wa maendeleo yaliyofuata - hata hutumiwa na meza ya kisasa Wahusika wa Unicode. Barua za alfabeti ya Kilatini tangu wakati huo zimechukua nafasi za kwanza katika usimbaji wowote.

Kwa jumla, ASCII iliruhusu herufi 256 kuhifadhiwa, lakini tangu 128 za kwanza zilichukuliwa na alfabeti ya Kilatini, 128 iliyobaki ilianza kutumika ulimwenguni kote kuunda viwango vya kitaifa. Kwa mfano, nchini Urusi, CP866 na KOI8-R ziliundwa kwa misingi yake. Tofauti kama hizo ziliitwa matoleo yaliyopanuliwa ya ASCII.

Kurasa za kanuni na "krakozyabry"

Uendelezaji zaidi wa teknolojia na kuibuka kwa kiolesura cha picha kulisababisha kuundwa kwa usimbaji wa ANSI na Taasisi ya Viwango ya Marekani. Watumiaji wa Kirusi, hasa kwa uzoefu, toleo lake linajulikana chini inayoitwa Windows 1251. Dhana ya "ukurasa wa msimbo" ilitumiwa kwanza ndani yake. Ilikuwa kwa msaada wa kurasa za msimbo zilizo na herufi kutoka alfabeti za kitaifa isipokuwa Kilatini ambapo "maelewano ya pande zote" yalianzishwa kati ya kompyuta zinazotumiwa katika nchi tofauti.

Hata hivyo, kuwepo kwa idadi kubwa ya encodings tofauti kutumika kwa lugha moja ilianza kusababisha matatizo. Wanaoitwa krakozyabrs walionekana. Yalitokana na tofauti kati ya ukurasa wa msimbo wa chanzo ambamo taarifa yoyote iliundwa na ukurasa wa msimbo chaguo-msingi uliotumika kwenye kompyuta ya mtumiaji wa mwisho.

Kama mfano, tunaweza kutaja usimbaji wa Kicyrillic hapo juu CP866 na KOI8-R. Herufi ndani yao zilitofautiana katika nafasi za msimbo na kanuni za uwekaji. Katika kwanza waliwekwa ndani mpangilio wa alfabeti, na kwa pili - kwa kiholela. Unaweza kufikiria nini kilikuwa kikitokea mbele ya macho ya mtumiaji ambaye alijaribu kufungua maandishi kama haya bila kuwa na ukurasa wa msimbo unaohitajika au wakati ilitafsiriwa vibaya na kompyuta.

Uundaji wa Unicode

Kuenea kwa mtandao na teknolojia zinazohusiana kama vile Barua pepe, ilisababisha ukweli kwamba mwishowe hali na upotovu wa maandiko iliacha kuambatana na kila mtu. Kampuni zinazoongoza za IT zimeunda Muungano wa Unicode. Jedwali la wahusika ambalo alianzisha mnamo 1991, liitwalo UTF-32, linaweza kuhifadhi zaidi ya wahusika bilioni wa kipekee. Ilikuwa hatua muhimu zaidi kwenye njia ya kufafanua maandishi.

Walakini, jedwali la kwanza la nambari za wahusika, Unicode UTF-32, haikutumiwa sana. Sababu kuu ilikuwa kupunguzwa kwa habari iliyohifadhiwa. Ilihesabiwa haraka kuwa kwa nchi zinazotumia alfabeti ya Kilatini iliyosimbwa kwa kutumia mpya meza ya ulimwengu wote, maandishi yatachukua nafasi mara nne zaidi kuliko kutumia jedwali la ASCII lililopanuliwa.

Maendeleo ya Unicode

Jedwali lifuatalo la herufi za Unicode UTF-16 lilisuluhisha tatizo hili. Encoding ndani yake ilifanyika kwa nusu ya idadi ya bits, lakini wakati huo huo idadi ya mchanganyiko iwezekanavyo ilipungua. Badala ya mabilioni ya wahusika, hukuruhusu kuhifadhi 65,536 tu. Walakini, ilifanikiwa sana kwamba nambari hii, kulingana na uamuzi wa Consortium, ilifafanuliwa kama nafasi ya msingi ya uhifadhi wa wahusika wa kawaida wa Unicode.

Licha ya mafanikio haya, UTF-16 haikufaa kila mtu, kwani kiasi cha kuhifadhiwa na habari zinazosambazwa ilikuwa bado mara mbili. Suluhisho la ulimwengu wote ikawa UTF-8, jedwali la herufi za Unicode zenye urefu tofauti. Hii inaweza kuitwa mafanikio katika eneo hili.

Kwa hivyo, kwa kuanzishwa kwa viwango viwili vya mwisho, jedwali la wahusika wa Unicode lilitatua tatizo la nafasi moja ya msimbo kwa fonti zote zinazotumika sasa.

Unicode kwa lugha ya Kirusi

Kwa sababu ya urefu wa kutofautiana wa msimbo unaotumiwa kuonyesha wahusika, alfabeti ya Kilatini imesimbwa katika Unicode kwa njia sawa na katika babu yake ASCII, yaani, kwa kidogo. Kwa alfabeti nyingine picha inaweza kuonekana tofauti. Kwa mfano, herufi za alfabeti ya Kijojiajia hutumia baiti tatu kwa usimbaji, na herufi za alfabeti ya Kisirilli hutumia mbili. Yote hii inawezekana ndani ya mfumo wa kutumia kiwango cha UTF-8 Unicode (meza ya wahusika). Lugha ya Kirusi au alfabeti ya Cyrilli inachukua nafasi 448 katika nafasi ya jumla ya kanuni, imegawanywa katika vitalu vitano.

Vitalu hivi vitano ni pamoja na alfabeti ya kimsingi ya Kisirili na Kislavoni cha Kanisa, na barua za ziada kutoka kwa lugha zingine zinazotumia alfabeti ya Kisirili. Idadi ya nafasi zimetengwa ili kuonyesha aina za zamani za kuwakilisha herufi za Kisirili, na nafasi 22 kati ya jumla bado hazina malipo.

Toleo la sasa la Unicode

Pamoja na suluhisho la kazi yake ya msingi, ambayo ilikuwa kusawazisha fonti na kuunda nafasi moja ya nambari kwao, Consortium haikusimamisha kazi yake. Unicode inaendelea kubadilika na kupanuka. Mwisho toleo la sasa Kiwango hiki cha 9.0 kilitolewa mnamo 2016. Ilijumuisha alfabeti sita za ziada na kupanua orodha ya emoji sanifu.

Inapaswa kusemwa kwamba ili kurahisisha utafiti, hata lugha zinazoitwa zilizokufa huongezwa kwa Unicode. Walipokea jina hili kwa sababu hakuna watu ambao ni asili yao. Kundi hili pia linajumuisha lugha ambazo zimefikia wakati wetu tu kwa njia ya makaburi yaliyoandikwa.

Kimsingi, tuma ili kuongeza herufi kwa specifikationer mpya Mtu yeyote anaweza kutumia Unicode. Ukweli, kwa hili utalazimika kujaza idadi nzuri ya hati za awali na kutumia muda mwingi. Mfano hai wa hii ni hadithi ya mtayarishaji programu Terence Eden. Mnamo 2013, alituma maombi ya kujumuisha katika alama za vipimo zinazohusiana na uteuzi wa vifungo vya kudhibiti nguvu za kompyuta. KATIKA nyaraka za kiufundi zimekuwa zikitumika tangu katikati ya miaka ya 1970, lakini hazikuwa sehemu ya Unicode hadi vipimo vya 9.0.

meza ya ishara

Kila kompyuta, bila kujali mfumo wa uendeshaji unaotumiwa, hutumia jedwali la herufi za Unicode. Jinsi ya kutumia meza hizi, wapi kuzipata na kwa nini zinaweza kuwa na manufaa kwa mtumiaji wa kawaida?

Katika Windows OS, meza ya ishara iko kwenye sehemu ya menyu ya "Utilities". Katika familia ya chumba cha upasuaji Mifumo ya Linux inaweza kupatikana katika sehemu ndogo ya "Vifaa", na kwenye MacOS - katika mipangilio ya kibodi. Kusudi kuu la meza hii ni kuingia hati za maandishi herufi ambazo hazipo kwenye kibodi.

Upeo mkubwa zaidi wa maombi kwa meza hizo unaweza kupatikana: kutoka kwa kuingia alama za kiufundi na alama za kitaifa mifumo ya fedha kabla ya kuandika maagizo matumizi ya vitendo Kadi za Tarot.

Hatimaye

Unicode inatumika kila mahali na iliingia katika maisha yetu na maendeleo ya mtandao na teknolojia za simu. Shukrani kwa matumizi yake, mfumo wa mawasiliano kati ya makabila umerahisishwa kwa kiasi kikubwa. Tunaweza kusema kwamba kuanzishwa kwa Unicode ni kielelezo, lakini haionekani kabisa kutoka nje, mfano wa matumizi ya teknolojia kwa manufaa ya kawaida ya wanadamu wote.

Unicode au Unicode (kutoka neno la Kiingereza Unicode) ni kiwango cha usimbaji wa herufi. Inafanya uwezekano wa karibu lugha zote zilizoandikwa kuwakilishwa katika usimbaji.

Mwishoni mwa miaka ya 1980, jukumu la kiwango lilipewa wahusika 8-bit. Usimbaji wa 8-bit ulianzishwa marekebisho mbalimbali, idadi ambayo ilikuwa ikiongezeka mara kwa mara. Hii ilikuwa hasa matokeo ya upanuzi hai wa anuwai ya lugha zinazotumiwa. Kulikuwa pia na hamu miongoni mwa wasanidi programu kuja na usimbaji ambao ungedai angalau sehemu ya ulimwengu wote.

Kama matokeo, ikawa muhimu kutatua shida kadhaa:

  • Matatizo ya kuonyesha hati katika usimbaji usio sahihi. Inaweza kutatuliwa ama kwa kuanzisha mbinu mara kwa mara za kubainisha usimbaji unaotumiwa, au kwa kuanzisha usimbaji mmoja kwa kila mtu;
  • matatizo ya vifurushi vya wahusika mdogo, ambayo inaweza kutatuliwa ama kwa kubadili fonts katika hati au kwa kuanzisha encoding kupanuliwa;
  • tatizo la kubadilisha encodings kutoka kwa moja hadi nyingine, ambayo ilionekana kuwa inawezekana kutatua ama kwa kutumia mabadiliko ya kati (encoding ya tatu), ikiwa ni pamoja na wahusika kutoka kwa encodings tofauti, au kwa kuandaa meza za uongofu kwa kila encodings mbili;
  • matatizo na kurudia kwa fonti za kibinafsi. Kijadi, kila usimbaji ulichukua uwepo wa fonti yake, hata wakati usimbaji huo uliambatana kabisa au kiasi katika seti ya herufi. Kwa kiasi fulani, tatizo lilitatuliwa kwa usaidizi wa fonti "kubwa", ambazo wahusika wanaohitajika kwa encoding maalum walichaguliwa. Lakini ili kuamua kiwango cha kufuata, ilikuwa ni lazima kuunda rejista moja wahusika.

Kwa hivyo, swali la haja ya kuunda encoding "pana" ya umoja ilikuwa kwenye ajenda. Inatumika katika Asia ya Kusini-Mashariki usimbaji wenye urefu tofauti wa herufi ulionekana kuwa mgumu sana kutumia. Kwa hiyo, msisitizo uliwekwa kwa kutumia tabia ambayo ina upana wa kudumu. Herufi 32 zilionekana kuwa ngumu sana na herufi 16-bit hatimaye zilishinda.

Kiwango hicho kilipendekezwa kwa jumuiya ya Mtandao mnamo 1991 na shirika lisilo la faida "Unicode Consortium". Matumizi yake hufanya iwezekane kusimba idadi kubwa ya wahusika aina tofauti kuandika. Nyaraka za Unicode hazijawekwa kwa karibu Wahusika wa Kichina, wala alama za hisabati, si Kisiriliki wala Kilatini. Katika kesi hii, kurasa za msimbo hazihitaji kubadili wakati wa operesheni.

Kiwango kinajumuisha sehemu kuu mbili: seti ya herufi zima (UCS) na familia ya usimbaji (UTF kwa Kiingereza). Seti ya herufi zima huweka uwiano wa kipekee kwa misimbo ya wahusika. Nambari katika kesi hii ni vipengele vya nyanja ya msimbo, ambayo ni integers zisizo hasi. Kazi ya familia ya usimbaji ni kuamua uwakilishi wa mashine ya mlolongo wa misimbo ya UCS.

Katika kiwango cha Unicode, nambari huwekwa katika maeneo kadhaa. Misimbo ya eneo kuanzia U+0000 hadi U+007F inajumuisha herufi za ASCII zilizo na misimbo inayohitajika. Zaidi juu kuna maeneo ya alama za maandishi tofauti, alama za kiufundi, na alama za uakifishaji. Kundi tofauti la misimbo huhifadhiwa kwa matumizi ya baadaye. Maeneo ya herufi yafuatayo yenye misimbo yamebainishwa kwa alfabeti ya Kisirili: U+0400 - U+052F, U+2DE0 - U+2DFF, U+A640 - U+A69F.

Umuhimu wa usimbaji huu katika nafasi ya wavuti unakua bila kuzuilika. Sehemu ya tovuti zinazotumia Unicode ilikuwa karibu asilimia 50 mwanzoni mwa 2010.

Unicode ni dunia kubwa sana na ngumu, kwa sababu kiwango kinakuwezesha kuwakilisha na kufanya kazi kwenye kompyuta na maandiko yote kuu ya dunia. Mifumo mingine ya uandishi imekuwepo kwa zaidi ya miaka elfu moja, na mingi yao ikiendelea karibu bila kujitegemea katika sehemu tofauti za ulimwengu. Watu wamekuja na vitu vingi sana na mara nyingi huwa tofauti sana kutoka kwa kila mmoja hivi kwamba kuchanganya vyote katika kiwango kimoja ilikuwa kazi ngumu sana na kabambe.

Ili kuelewa Unicode kwa kweli, unahitaji kuwa na angalau ufahamu wa juu juu wa vipengele vya hati zote ambazo kiwango hukuruhusu kufanya kazi nazo. Lakini hii ndio kila msanidi anahitaji? Tutasema hapana. Ili kutumia Unicode kwa kazi nyingi za kila siku, inatosha kujua kiwango cha chini kabisa cha maarifa, na kisha kuzama katika kiwango kinachohitajika.

Katika makala hii tutazungumza juu ya kanuni za msingi za Unicode na kuangazia zile muhimu maswali ya vitendo, ambayo watengenezaji hakika watakutana nayo katika kazi zao za kila siku.

Kwa nini Unicode ilihitajika?

Kabla ya ujio wa Unicode, encodings moja-byte ilikuwa karibu kutumika ulimwenguni pote, ambayo mpaka kati ya wahusika wenyewe, uwakilishi wao katika kumbukumbu ya kompyuta na kuonyesha kwenye skrini ilikuwa ya kiholela kabisa. Ikiwa ulifanya kazi na lugha moja au nyingine ya kitaifa, basi fonti za encoding zinazofanana ziliwekwa kwenye mfumo wako, ambayo ilikuruhusu kuteka byte kutoka kwa diski kwenye skrini kwa njia ambayo walifanya akili kwa mtumiaji.

Ikiwa ulichapisha kwenye kichapishi faili ya maandishi na kwenye ukurasa wa karatasi uliona seti ya gibberish isiyoeleweka, ambayo ilimaanisha kuwa fonti zinazofaa hazikuwekwa kwenye kifaa cha uchapishaji na haikufasiri byte jinsi ungependa.

Mbinu hii kwa ujumla na usimbaji wa baiti moja haswa ilikuwa na shida kadhaa:

  1. Iliwezekana kufanya kazi wakati huo huo na herufi 256 tu, na 128 za kwanza zikiwa zimehifadhiwa kwa herufi za Kilatini na kudhibiti, na katika nusu ya pili, pamoja na alama za alfabeti ya kitaifa, ilihitajika kupata mahali pa alama za uwongo ( ╔ ╗).
  2. Fonti ziliunganishwa kwa usimbaji maalum.
  3. Kila usimbaji uliwakilisha seti yake ya wahusika, na ubadilishaji kutoka kwa moja hadi nyingine uliwezekana tu na hasara ndogo, wakati herufi zilizokosekana zilibadilishwa na zile zinazofanana kielelezo.
  4. Kuhamisha faili kati ya vifaa vinavyoendesha mifumo tofauti ya uendeshaji ilikuwa vigumu. Labda ulilazimika kuwa na programu ya kubadilisha fedha au kubeba pamoja na faili fonti za ziada. Uwepo wa mtandao kama tunavyojua haukuwezekana.
  5. Kuna mifumo isiyo ya kialfabeti ya uandishi duniani (uandishi wa hieroglyphic), ambayo kimsingi haiwezi kuwakilishwa katika encoding moja-byte.

Kanuni za msingi za Unicode

Sisi sote tunaelewa vizuri kwamba kompyuta haijui kuhusu vyombo vyovyote bora, lakini inafanya kazi na bits na byte. Lakini mifumo ya kompyuta Wakati watu huunda, sio mashine, wakati mwingine ni rahisi zaidi kwako na mimi kufanya kazi na dhana za kubahatisha, na kisha kuhama kutoka kwa muhtasari hadi kwa simiti.

Muhimu! Moja ya kanuni kuu Falsafa ya Unicode hufanya tofauti ya wazi kati ya wahusika, uwakilishi wao kwenye kompyuta, na onyesho lao kwenye kifaa cha kutoa.

Dhana ya tabia ya abstract ya Unicode imetambulishwa, iliyopo pekee kwa namna ya dhana ya kubahatisha na makubaliano kati ya watu, yaliyowekwa katika kiwango. Kila herufi ya Unicode inahusishwa na nambari kamili isiyo hasi inayoitwa nukta yake ya msimbo.

Kwa mfano, herufi ya Unicode U+041F ni herufi kubwa ya Cyrillic P. Kuna uwezekano kadhaa wa kuwakilisha. ya ishara hii kwenye kumbukumbu ya kompyuta, kama njia elfu kadhaa za kuionyesha kwenye skrini ya kufuatilia. Lakini wakati huo huo P, itakuwa pia P au U+041F katika Afrika.

Huu ni ujumuishaji unaojulikana au utenganisho wa kiolesura kutoka kwa utekelezaji - dhana ambayo imejidhihirisha vizuri katika upangaji programu.

Inabadilika kuwa, ikiongozwa na kiwango, maandishi yoyote yanaweza kusimbwa kama mlolongo wa herufi za Unicode.

Habari U+041F U+0440 U+0438 U+0432 U+0435 U+0442
iandike kwenye kipande cha karatasi, ipakie kwenye bahasha na uitume sehemu yoyote ya dunia. Ikiwa wanajua juu ya uwepo wa Unicode, basi maandishi yatatambuliwa nao kwa njia sawa na wewe na mimi. Hawatakuwa na shaka hata kidogo kwamba herufi ya mwisho ni herufi ndogo ya Kisirili e(U+0435), na usiseme Kilatini kidogo e(U+0065). Ona kwamba hatujasema neno lolote kuhusu uwakilishi wa baiti.

Ingawa herufi za Unicode huitwa alama, si mara zote zinalingana na ishara katika maana ya jadi ya kutojua, kama vile herufi, nambari, alama ya uakifishaji au hieroglyph. (Angalia spoiler kwa maelezo zaidi.)

Mifano ya herufi mbalimbali za Unicode

Kuna herufi za kiufundi za Unicode, kwa mfano:

  • U+0000: herufi tupu;
  • U+D800–U+DFFF: warithi wa chini na waandamizi wa uwasilishaji wa kiufundi nafasi za msimbo katika safu kutoka 10000 hadi 10FFFF (soma: nje ya BMYAP/BMP) katika familia ya usimbaji ya UTF-16;
  • na kadhalika.
Kuna alama za uakifishaji, kwa mfano U+200F: alama ya kubadilisha mwelekeo wa uandishi kutoka kulia kwenda kushoto.

Kuna kundi zima la nafasi za upana na madhumuni mbalimbali (tazama makala bora ya habra :):

  • U+0020 (nafasi);
  • U+00A0 (nafasi isiyoweza kuvunja, katika HTML);
  • U+2002 (upachikaji wa nusu duara au En Space);
  • U+2003 (pachika au Em Space);
  • na kadhalika.
Kuna kuchanganya alama za diacritical - kila aina ya viboko, dots, tildes, nk, ambayo hubadilisha / kufafanua maana ya ishara ya awali na mtindo wake. Kwa mfano:
  • U+0300 na U+0301: ishara za dhiki ya msingi (papo hapo) na sekondari (dhaifu);
  • U+0306: fupi (superscript), kama katika th;
  • U+0303: maandishi makubwa tilde;
  • na kadhalika.
Kuna hata kitu cha kigeni kama vile vitambulisho vya lugha (U+E0001, U+E0020–U+E007E, na U+E007F), ambavyo kwa sasa vina utata. Zilikusudiwa kama njia ya kuashiria sehemu fulani za maandishi kuwa za lahaja ya lugha fulani (tuseme, Kiingereza cha Amerika na Kiingereza), ambayo inaweza kuathiri maelezo ya jinsi maandishi yalivyoonyeshwa.

Tutakuambia wakati ujao ishara ni nini, jinsi nguzo ya grapheme (soma: inayotambulika kama picha moja ya ishara) inavyotofautiana na ishara ya Unicode na quantum ya msimbo.

Nafasi ya msimbo wa Unicode

Nafasi ya msimbo wa Unicode ina nafasi za msimbo 1,114,112 kuanzia 0 hadi 10FFFF. Kati ya hizi, ni 128,237 pekee ambazo zimepewa thamani kwa toleo la tisa la kiwango. Baadhi ya nafasi zimehifadhiwa kwa matumizi ya kibinafsi na Unicode Consortium inaahidi kutowahi kugawa maadili kwa nafasi katika maeneo haya maalum.

Kwa ajili ya urahisi, nafasi nzima imegawanywa katika ndege 17 (sita kati yao hutumiwa sasa). Hadi hivi majuzi, ilisemekana kuwa kuna uwezekano mkubwa kwamba utakutana na Ndege ya Msingi ya Lugha nyingi (BMP), ambayo inajumuisha herufi za Unicode kutoka U+0000 hadi U+FFFF. (Kuangalia mbele kidogo: herufi kutoka BMP zinawakilishwa katika UTF-16 na ka mbili, sio nne). Mnamo 2016, nadharia hii tayari iko katika shaka. Kwa mfano, herufi maarufu za Emoji zinaweza kuonekana katika ujumbe wa mtumiaji na unahitaji kuwa na uwezo wa kuzichakata kwa usahihi.

Usimbaji

Ikiwa tunataka kutuma maandishi kupitia Mtandao, tutahitaji kusimba mlolongo wa herufi za Unicode kama mfuatano wa baiti.

Kiwango cha Unicode kinajumuisha maelezo ya idadi ya usimbaji wa Unicode, kama vile UTF-8 na UTF-16BE/UTF-16LE, ambayo huruhusu nafasi nzima ya herufi kusimba. Ubadilishaji kati ya usimbaji huu unaweza kufanywa bila malipo bila kupoteza taarifa.

Pia, hakuna mtu aliyeghairi usimbaji wa baiti moja, lakini hukuruhusu kusimba kipande chako cha kibinafsi na nyembamba sana cha wigo wa Unicode - nafasi za nambari 256 au chini. Kwa encodings vile, meza zipo na zinapatikana kwa kila mtu, ambapo kila thamani ya byte moja inahusishwa na tabia ya Unicode (tazama, kwa mfano, CP1251.TXT). Licha ya mapungufu, usimbaji wa baiti moja unageuka kuwa wa vitendo sana linapokuja suala la kufanya kazi na safu kubwa ya lugha moja. habari ya maandishi.

Ya encodings ya Unicode, ya kawaida kwenye mtandao ni UTF-8 (ilishinda kiganja mwaka wa 2008), hasa kutokana na ufanisi wake na utangamano wa uwazi na ASCII-bit saba. Wahusika wa Kilatini na huduma, alama za msingi za alama na nambari - i.e. herufi zote za ASCII za biti saba zimesimbwa katika UTF-8 kama baiti moja, sawa na katika ASCII. Herufi za maandishi mengi makubwa, bila kuhesabu herufi adimu zaidi za hieroglyphic, zinawakilishwa ndani yake na baiti mbili au tatu. Nafasi kubwa ya msimbo iliyofafanuliwa na kiwango, 10FFFF, imesimbwa kwa baiti nne.

Tafadhali kumbuka kuwa UTF-8 ni usimbaji wa urefu wa msimbo unaobadilika. Kila herufi ya Unicode ndani yake inawakilishwa na mlolongo wa quantums za msimbo na urefu wa chini wa quantum moja. Nambari ya 8 inamaanisha urefu kidogo wa kitengo cha nambari (kitengo cha nambari) - bits 8. Kwa familia ya usimbaji ya UTF-16, saizi ya nambari ya nambari ni, ipasavyo, biti 16. Kwa UTF-32 - 32 bits.

Ikiwa unatuma ukurasa wa HTML na maandishi ya Cyrillic kwenye mtandao, basi UTF-8 inaweza kutoa faida kubwa sana, kwa sababu markup zote, pamoja na vizuizi vya JavaScript na CSS, vitasimbwa kwa ufanisi katika baiti moja. Mfano ukurasa wa nyumbani Habra katika UTF-8 inachukua 139Kb, na katika UTF-16 tayari ni 256Kb. Kwa kulinganisha, ikiwa unatumia win-1251 na kupoteza uwezo wa kuokoa baadhi ya wahusika, basi ukubwa, ikilinganishwa na UTF-8, itapungua kwa 11Kb hadi 128Kb pekee.

Ili kuhifadhi habari za kamba katika programu, encodings 16-bit Unicode hutumiwa mara nyingi kutokana na unyenyekevu wao, pamoja na ukweli kwamba wahusika wa mifumo kuu ya uandishi wa dunia husimbwa kwa quantum moja ya kumi na sita. Kwa mfano, Java hutumia kwa ufanisi UTF-16 kwa uwakilishi wa kamba wa ndani. chumba cha upasuaji Mfumo wa Windows pia hutumia UTF-16 ndani.

Kwa vyovyote vile, mradi tu tunabaki kwenye nafasi ya Unicode, haijalishi jinsi maelezo ya kamba yanahifadhiwa ndani ya programu mahususi. Ikiwa umbizo la hifadhi ya ndani hukuruhusu kusimba kwa usahihi nafasi zote za msimbo milioni-pamoja na hakuna upotezaji wa habari kwenye mpaka wa programu, kwa mfano wakati wa kusoma kutoka kwa faili au kunakili kwenye ubao wa kunakili, basi kila kitu kiko sawa.

Ili kutafsiri kwa usahihi maandishi yaliyosomwa kutoka kwa diski au kutoka kwa tundu la mtandao, lazima kwanza uamue usimbuaji wake. Hii inafanywa ama kwa kutumia meta-taarifa iliyotolewa na mtumiaji, iliyoandikwa ndani au kando ya maandishi, au kuamuliwa kwa njia ya urithi.

Mstari wa chini

Kuna habari nyingi na inafaa kutoa muhtasari mfupi wa kila kitu kilichoandikwa hapo juu:
  • Unicode huonyesha tofauti ya wazi kati ya herufi, uwakilishi wao kwenye kompyuta, na onyesho lao kwenye kifaa cha kutoa.
  • Herufi za Unicode haziwiani kila wakati na herufi katika maana ya jadi-kutojua, kama vile herufi, nambari, alama ya uakifishaji au hieroglyph.
  • Nafasi ya msimbo wa Unicode ina nafasi za msimbo 1,114,112 kuanzia 0 hadi 10FFFF.
  • Ndege ya msingi ya lugha nyingi inajumuisha herufi za Unicode U+0000 hadi U+FFFF, ambazo zimesimbwa katika UTF-16 kama baiti mbili.
  • Usimbaji wowote wa Unicode hukuruhusu kusimba nafasi nzima ya nafasi za nambari za Unicode, na ubadilishaji kati ya usimbaji tofauti kama huo unafanywa bila upotezaji wa habari.
  • Usimbaji wa baiti moja hukuruhusu kusimba pekee sehemu ndogo Wigo wa Unicode, lakini inaweza kuwa muhimu wakati wa kufanya kazi na kiasi kikubwa cha taarifa za lugha moja.
  • Usimbaji wa UTF-8 na UTF-16 una urefu wa msimbo unaobadilika. Katika UTF-8, kila herufi ya Unicode inaweza kusimba katika baiti moja, mbili, tatu, au nne. Katika UTF-16 - ka mbili au nne.
  • Umbizo la ndani la kuhifadhi maelezo ya maandishi ndani ya programu tofauti inaweza kuwa ya kiholela, ikitolewa operesheni sahihi na nafasi nzima ya msimbo wa Unicode na hakuna hasara wakati wa kuhamisha data kuvuka mpaka.

Dokezo la haraka kuhusu kuweka msimbo

Kunaweza kuwa na mkanganyiko fulani na neno usimbaji. Ndani ya Unicode, usimbuaji hutokea mara mbili. Mara ya kwanza seti ya herufi ya Unicode inasimbwa, kwa maana kwamba kila herufi ya Unicode imepewa nafasi ya msimbo inayolingana. Utaratibu huu hugeuza herufi iliyowekwa kwenye Unicode kuwa seti ya herufi zilizosimbwa. Mara ya pili, mlolongo wa wahusika wa Unicode hubadilishwa kuwa kamba ya byte na mchakato huu pia huitwa encoding.

Katika istilahi za Kiingereza, kuna vitenzi viwili tofauti, kuweka msimbo na kusimba, lakini hata wazungumzaji asilia mara nyingi huchanganyikiwa navyo. Kwa kuongezea, neno seti ya herufi au seti ya charset hutumiwa kama kisawe cha neno seti ya herufi zilizosimbwa.

Tunasema haya yote kwa ukweli kwamba ni mantiki kuzingatia muktadha na kutofautisha kati ya hali tunapozungumza juu ya msimamo wa kificho wa mhusika wa Unicode abstract na tunapozungumza juu ya uwakilishi wake wa kawaida.

Hatimaye

Kuna mengi katika Unicode nyanja mbalimbali kwamba haiwezekani kufunika kila kitu ndani ya kifungu kimoja. Na sio lazima. Taarifa hapo juu ni ya kutosha ili kuepuka kuchanganyikiwa katika kanuni za msingi na kufanya kazi na maandishi katika kazi nyingi za kila siku (soma: bila kwenda zaidi ya BMP). Katika makala zifuatazo tutazungumza juu ya kuhalalisha na kutoa kamili zaidi muhtasari wa kihistoria maendeleo ya usimbuaji, tutazungumza juu ya shida za istilahi ya Unicode ya lugha ya Kirusi, na pia kufanya nyenzo kuhusu vipengele vya vitendo kwa kutumia UTF-8 na UTF-16.