Keng belgi - Wide character

A keng belgi bu kompyuter belgi ma'lumotlar turi odatda an'anaviydan kattaroq hajmga ega 8-bit belgi. Ma'lumot turining kattalashishi kattaroq kodlangan ma'lumotlardan foydalanishga imkon beradi belgilar to'plamlari.

Tarix

1960 yillar davomida meynfreym va mini-kompyuter ishlab chiqaruvchilari 8-bit atrofida standartlasha boshladilar bayt ularning eng kichik ma'lumot turi sifatida. 7-bit ASCII belgilar to'plami kodlashning sanoat standart uslubiga aylandi alfanumerik uchun belgilar teletayp mashinalari va kompyuter terminallari. Qo'shimcha bit ma'lumotni saqlash va uzatish yaxlitligini ta'minlash uchun paritet uchun ishlatilgan. Natijada, 8 bitli bayt amalda xotirada ASCII belgilarini saqlaydigan kompyuter tizimlari uchun ma'lumotlar turi.

Keyinchalik, kompyuter ishlab chiqaruvchilari ASCII belgilar to'plamini cheklangan to'plamidan tashqariga chiqarish uchun zaxira bitdan foydalanishni boshladilar Ingliz alifbosi belgilar. 8-bitli kengaytmalar masalan, IBM kod sahifasi 37, PETSCII va ISO 8859 uchun odatiy holga aylandi, terminal yordamini taklif qildi Yunoncha, Kirillcha va boshqalar. Biroq, bunday kengaytmalar mintaqaga xos bo'lganligi sababli cheklangan va ko'pincha ularni tandemda ishlatib bo'lmaydi. Bir belgi to'plamidan ikkinchisiga o'tish uchun maxsus konvertatsiya qilish tartib-qoidalaridan foydalanish kerak edi, natijada maqsadli to'plamda ekvivalent belgi mavjud bo'lmaganda, halokatli tarjima olib boriladi.

1989 yilda Xalqaro standartlashtirish tashkiloti ustida ish boshladi Umumjahon belgilar to'plami (UCS), 16 bitli (2 baytli) yoki 32 bitli (4 baytli) qiymat yordamida kodlanishi mumkin bo'lgan ko'p tilli belgilar to'plami. Ushbu kattaroq qiymatlar yangi belgilar qiymatlarini xotirada saqlash uchun 8 bitdan kattaroq ma'lumotlar turidan foydalanishni talab qildi. Shunday qilib, keng belgi atamasi ularni an'anaviy 8-bitlik belgilar turlaridan farqlash uchun ishlatilgan.

UCS va Unicode bilan bog'liqlik

Keng belgi xotiradagi ma'lumotlar turining hajmiga ishora qiladi. Belgilar to'plamidagi har bir qiymat qanday aniqlanganligi ko'rsatilmagan. Ushbu qiymatlar o'rniga belgilar to'plamlari yordamida aniqlanadi UCS va Unicode oddiygina 8-bitli raqamli qiymatdan (jami 255) ko'proq belgilarni kodlaydigan ikkita umumiy belgilar to'plami bo'lish.

Ko'p baytli belgilar bilan munosabat

Xuddi avvalgi ma'lumotlar uzatish tizimlari an etishmasligidan aziyat chekkan 8-bit toza ma'lumotlar yo'li, zamonaviy uzatish tizimlari ko'pincha belgilar ma'lumotlari uchun 16 yoki 32 bitli ma'lumot yo'llarini qo'llab-quvvatlamaydi. Bu kabi belgilarni kodlash tizimlariga olib keldi UTF-8 foydalanishingiz mumkin bir necha bayt bitta 8 bitli belgi uchun juda katta qiymatni kodlash uchun.

The C standart orasidagi farqni ajratib turadi multibayt har bir belgini aks ettirish uchun doimiy yoki o'zgaruvchan bayt sonidan foydalanadigan belgilar kodlashlari (asosan manba kodi va tashqi fayllarda ishlatiladi), keng belgilar, qaysiki ish vaqti bitta ob'ektdagi belgilar tasvirlari (odatda, 8 bitdan katta).

Keng belgining o'lchami

UTF-16 kichkina endian Microsoft-da (va Windows operatsion tizimida) kodlash standarti. Shunga qaramay surrogat juftlari u 32-bitni ham qo'llab-quvvatlaydi [1]. The .NET Framework platforma UTF7, UTF8, UTF16 va UTF32 kabi bir nechta keng xarakterli dasturlarni qo'llab-quvvatlaydi.[2]

The Java platforma keng belgilar o'zgaruvchilarini 16 bitli qiymatlar sifatida belgilashni va belgilar yordamida kodlashni talab qiladi UTF-16 (ilgari UCS-2 ishlatilganligi sababli), zamonaviy esa Unix o'xshash tizimlar odatda interfeyslarida UTF-8 ni talab qiladi.

Dasturlash xususiyatlari

C / C ++

The C va C ++ standart kutubxonalar kiradi bir qator ob'ektlar ulardan tashkil topgan keng belgilar va torlar bilan ishlash uchun. Ma'lumot turi yordamida keng belgilar aniqlanadi wchar_t, bu asl nusxada C90 standart sifatida belgilandi

"qiymatlari diapazoni qo'llab-quvvatlanadigan mahalliy tillar orasida ko'rsatilgan eng katta kengaytirilgan belgilar to'plamining barcha a'zolari uchun alohida kodlarni ifodalashi mumkin bo'lgan ajralmas tur" (ISO 9899: 1990 §4.1.5)

Ham C, ham C ++ belgilangan o'lchamdagi belgilar turlarini joriy etdi nilufar va char32_t 2011 yil 16-bit va 32-bitlarning aniq ifodasini ta'minlash uchun o'zlarining standartlarini qayta ko'rib chiqishda Unicode o'zgarish formatlari, tark etish wchar_t amalga oshirish belgilangan. ISO / IEC 10646: 2003 Unicode standart 4.0 shunday deydi:

"Kengligi wchar_t kompilyatorga xos bo'lib, 8 bitgacha bo'lishi mumkin. Binobarin, har qanday C yoki C ++ kompilyatorlarida ko'chma bo'lishi kerak bo'lgan dasturlardan foydalanmaslik kerak wchar_t Unicode matnini saqlash uchun. The wchar_t turi kompilyator tomonidan belgilangan bo'lishi mumkin bo'lgan keng belgilarni saqlash uchun mo'ljallangan Unicode ba'zi kompilyatorlardagi belgilar. "[3]

Python

Ga binoan Python hujjatlari, ba'zida til ishlatadi wchar_t uning xarakter turi uchun asos sifatida Py_UNICODE. Bu yoki yo'qligiga bog'liq wchar_t ushbu tizimda "tanlangan Python Unicode qurish variantiga mos keladi".[4]

Adabiyotlar

  1. ^ http://msdn.microsoft.com/en-us/goglobal/bb688113.aspx[o'lik havola ]
  2. ^ https://msdn.microsoft.com/en-us/library/System.Text.aspx
  3. ^ "5.2 ANSI / ISO C wchar_t". Unicode standarti. Aliprand, Joan., Unicode konsortsiumi. (Versiya 4.0 tahrir). Boston: Addison-Uesli. 2003. p. 109. ISBN  0-321-18578-1. OCLC  52257637.CS1 maint: boshqalar (havola)
  4. ^ https://docs.python.org/c-api/unicode.html 2009-12-19 kirish

Tashqi havolalar