Bosh sahifa Wiki Code point

Code point

Code point — belgilar to‘plamidagi abstrakt belgiga ajratilgan raqamli identifikator. Unicode’da u odatda U+ prefiksi va o‘n oltilik qiymat bilan yoziladi, masalan lotin bosh A harfi U+0041. Code point belgi ma’nosini raqam bilan bog‘laydi, ammo uning xotirada nechta bayt egallashi yoki ekranda qanday glif bilan chizilishini o‘zi belgilamaydi.

Unicode fazosi

Unicode code pointlari U+0000 dan U+10FFFF gacha bo‘lgan oraliqda joylashadi. Bu fazo 17 plane’ga bo‘linadi. Eng ko‘p ishlatiladigan yozuvlar Basic Multilingual Plane’da, ayrim tarixiy yozuv, emoji va musiqiy belgilar supplementary plane’larda turadi. Surrogate sifatida ajratilgan U+D800–U+DFFF qiymatlari mustaqil Unicode scalar value emas.

Code point va character atamalari har doim birga teng emas. é bitta U+00E9 code point bilan yoki e va combining acute accent ketma-ketligi bilan ifodalanishi mumkin. Foydalanuvchi ikkisini bitta ko‘rinadigan belgi deb qabul qiladi. Bayroq emoji ikki regional indicator, ayrim oilaviy emoji esa bir nechta code point va zero-width joiner’dan tuziladi.

Kodlash formatlari

UTF-8 code pointni bir-to‘rt bayt bilan kodlaydi va ASCII qiymatlarini bir baytda o‘zgarishsiz saqlaydi. UTF-16 Basic Multilingual Plane qiymatini bitta 16-bit code unit, supplementary qiymatni surrogate pair bilan ifodalaydi. UTF-32 har scalar value uchun odatda bitta 32-bit code unit ishlatadi, lekin ko‘proq joy talab qiladi.

Shu sabab “string uzunligi” API’ga qarab bayt, code unit, code point yoki grapheme cluster sonini anglatishi mumkin. UTF-16 asosidagi tilda ayrim emoji uzunligi 2 deb chiqadi. Matnni foydalanuvchi ko‘radigan belgilar bo‘yicha qisqartirish uchun grapheme segmentation kerak; aks holda combining mark yoki emoji ketma-ketligi o‘rtasidan uzilishi mumkin.

Normalizatsiya

Vizual jihatdan bir xil matn turli code point ketma-ketligida kelishi qidiruv va tenglikni murakkablashtiradi. Unicode normalization canonical yoki compatibility ekvivalentlarini tanlangan shaklga keltiradi. NFC ko‘pincha composed ko‘rinishni, NFD decomposed ko‘rinishni afzal qiladi. NFKC va NFKD ayrim tipografik farqlarni ham yo‘qotadi, shu sabab ularni ma’lumot ma’nosiga qarab qo‘llash kerak.

Case conversion ham oddiy bir-biriga mos xarita emas. Ba’zi harf tilga bog‘liq, ayrim uppercase natija bir nechta code pointdan iborat bo‘ladi. Identifier, username yoki xavfsizlik tokenini normalizatsiya qilish qoidasi protokolda aniq va barqaror belgilanishi zarur.

Xavfsizlik va amaliyot

Bir-biriga o‘xshash gliflar turli code point bo‘lishi mumkin. Lotin a va boshqa yozuvdagi o‘xshash belgi phishing yoki identifier spoofing’da ishlatiladi. Internationalized domain nomlari uchun maxsus mapping va display qoidalari mavjud. Kirishni “faqat ASCII” qilish universal yechim emas, lekin ruxsat etilgan scriptlar va confusable tekshiruvi xavfni kamaytiradi.

Noto‘g‘ri UTF-8 ketma-ketligi bir qatlamda rad etilib, boshqasida boshqacha almashtirilsa validation bypass yuz berishi mumkin. Decoder invalid input bo‘yicha aniq siyosatga ega bo‘lishi, barcha qatlam bir xil canonical shaklda ishlashi kerak. Database collation, qidiruv indeksi va dastur tenglik qoidalari ham moslashtiriladi.

Dasturiy kuzatish

Muammoni tekshirishda faqat ekrandagi belgini nusxalash yetarli emas. Dastur har grapheme tarkibidagi code pointlarni U+XXXX shaklida chiqarib, UTF baytlarini ham ko‘rsatishi mumkin. Bu oddiy apostrof, modifier letter va tipografik apostrof o‘rtasidagi farqni ochadi. Logdagi bunday diagnostika maxfiy matnni oshkor qilmasligi uchun faqat zarur segmentga va himoyalangan muhitga cheklanadi.

Bog‘liq tushunchalar

Unicode, UTF-8, UTF-16, Code unit, Grapheme cluster, Character encoding, Normalization