Bosh sahifa Wiki ASCII

ASCII

ASCII — lotin harflari, raqamlar, punctuation va boshqaruv belgilarini raqamli qiymatlar bilan ifodalovchi tarixiy character encoding standarti. Uning to‘liq nomi American Standard Code for Information Interchange hisoblanadi.

ASCII 7 bitdan foydalanadi va 128 ta qiymatni belgilaydi:

0 dan 127 gacha

U zamonaviy Unicode va UTF-8 tizimlarining muhim asoslaridan biri bo‘lib qolgan.

7-bit tuzilma

7 bit:

2^7 = 128

kombinatsiya beradi.

ASCII jadvali ikki katta qismga bo‘linadi:

  • 0–31 va 127 — control characterlar;
  • 32–126 — ko‘rinadigan belgilar.

Ko‘rinadigan belgilar

ASCII quyidagilarni o‘z ichiga oladi:

  • katta lotin harflari A–Z;
  • kichik lotin harflari a–z;
  • raqamlar 0–9;
  • space;
  • punctuation;
  • arithmetic symbol;
  • bracket;
  • quote.

Misollar:

A → 65 → 0x41
a → 97 → 0x61
0 → 48 → 0x30
space → 32 → 0x20

Control character

Control characterlar dastlab terminal va aloqa qurilmalarini boshqarish uchun yaratilgan.

Misollar:

  • NUL — 0;
  • BEL — 7;
  • Backspace — 8;
  • Tab — 9;
  • Line Feed — 10;
  • Carriage Return — 13;
  • Escape — 27;
  • Delete — 127.

Ularning ko‘pi zamonaviy protocol va terminal tizimida ham uchraydi.

CR va LF

Line ending tarixiy ikki control character bilan bog‘liq.

  • CR — carriage return, \r, 13;
  • LF — line feed, \n, 10.

Platformalar:

  • Unix/Linux — LF;
  • Windows — CRLF;
  • eski Mac tizimlari — CR.

Noto‘g‘ri line ending script, diff va protocol parsingga ta’sir qilishi mumkin.

NUL

NUL qiymati 0x00.

C tilida string oxiri NUL byte bilan belgilanadi.

Shu sababli C string ichida NUL oddiy belgi sifatida saqlanmaydi, length alohida bo‘lmasa string shu joyda tugaydi.

Binary data text API orqali uzatilganda bu muammo tug‘dirishi mumkin.

Escape

ESC control character terminal escape sequence’larini boshlashi mumkin.

Masalan, rang va cursor boshqaruvi.

Untrusted log ichidagi escape sequence terminal ko‘rinishini o‘zgartirishi mumkin.

Textni terminalga chiqarishda control characterlar sanitizatsiya qilinadi.

Printable ASCII

Ko‘rinadigan interval:

32–126

bo‘lib, space’dan ~ belgisigacha davom etadi.

Config, protocol token va identifierlar ba’zan faqat printable ASCII bilan cheklanadi.

Bu Unicode murakkabligini kamaytiradi, lekin boshqa tillardagi matnni ifodalash imkonini bermaydi.

Extended ASCII

“Extended ASCII” yagona standart emas.

8-bitning 128–255 oralig‘i turli code page’larda boshqa belgilarni bildiradi.

Misollar:

  • ISO-8859-1;
  • Windows-1252;
  • OEM code page.

Bir xil bayt boshqa encodingda boshqa belgi bo‘lishi mumkin.

Shuning uchun “ASCII fayl” deb 8-bit textni umumiy nomlash noaniq.

ASCII va Unicode

Unicode’ning dastlabki 128 code pointi ASCII bilan bir xil.

U+0000–U+007F

UTF-8da ham ASCII belgilar bir bayt va ayni numeric qiymat bilan saqlanadi.

Bu backward compatibilityning asosiy sababi.

ASCII va UTF-8

Har valid ASCII fayl valid UTF-8 ham hisoblanadi.

Ammo har UTF-8 fayl ASCII emas.

Masalan, o‘zbekcha o‘, kirill harflari yoki emoji bir nechta UTF-8 bayt talab qiladi va ASCII diapazonidan tashqarida.

Digit xususiyati

ASCII raqamlar ketma-ket joylashgan:

'0' = 48
'1' = 49
...
'9' = 57

Character raqam qiymatini olish uchun:

digit - '0'

usuli ishlatiladi, agar character 0–9 oralig‘ida ekani oldin tekshirilsa.

Harf registri

Katta va kichik harflar ham tartibli intervalda.

'A' = 65
'a' = 97

Ular orasidagi farq 32.

Faqat ASCII uchun bit operation bilan case o‘zgartirish mumkin, lekin Unicode matnda bu usul noto‘g‘ri.

Protocol

Ko‘p internet protokoli control va header qismlarida ASCIIga tayangan.

Misollar:

Payload yoki value Unicode bo‘lishi mumkin.

Base64

Binary data ASCII-compatible textga aylantiriladi.

Base64 alphabet:

  • katta harf;
  • kichik harf;
  • raqam;
  • +;
  • /;
  • padding uchun =.

Bu text-only channel orqali binary uzatishga yordam beradi.

ASCII art

Faqat text belgilar bilan rasm yoki diagramma chizish ASCII art deyiladi.

Misol:

+-------+
| START |
+-------+

Texnik hujjat va terminal interfeysda ishlatiladi.

Unicode box drawing belgilar ishlatilsa, u qat’iy ASCII bo‘lmaydi.

Security

Control character, CRLF va NUL input validationda muhim.

Misollar:

“Faqat ASCII” checki format securitysining bitta qismi, semantik validationni almashtirmaydi.

Diagnostika

ASCII bilan bog‘liq muammoda:

  • byte qiymati;
  • 7-bit yoki 8-bit;
  • code page;
  • line ending;
  • NUL;
  • control character;
  • UTF-8 deb noto‘g‘ri talqin qilish;
  • terminal rendering

tekshiriladi.

128dan yuqori bayt standart ASCII belgisi emas.

ASCII-compatible encoding

UTF-8 va ayrim boshqa encodinglar 0–127 oralig‘ida ASCII bilan bir xil baytlardan foydalanadi. Bu protocol delimiterlarini ishonchli aniqlashga yordam beradi.

Case-insensitive protocol

Ba’zi ASCII protocol tokenlari case-insensitive. Ularni locale-sensitive lowercase bilan emas, ASCII qoidasi bo‘yicha taqqoslash kerak. Aks holda ayrim locale’da I harfi kutilmagan natija beradi.

DEL va terminal

ASCII 127 qiymati DEL deb ataladi. Zamonaviy terminalda Backspace tugmasi 0x08 yoki 0x7F yuborishi mumkin. TTY sozlamasi qaysi byte erase amalini bajarishini belgilaydi.

Bog‘liq tushunchalar

Character encoding, Control character, Code page, Unicode, UTF-8, CRLF, NUL, Printable character, Base64