Bosh sahifa Wiki Encoding

Encoding

Encoding — axborotni ma’lum qoidalar asosida belgilar, baytlar yoki boshqa kod birliklari ketma-ketligiga aylantirish va qayta talqin qilish usulidir. Kompyuter tizimida matn, raqam, rasm va protokol maydonlari saqlanishi yoki uzatilishi uchun aniq formatga ega bo‘lishi kerak. Encoding maxfiylikni ta’minlamaydi: qoidani bilgan tomon ma’lumotni odatda kalitsiz qayta ochadi.

Matn kodlash

Unicode belgilar uchun abstrakt code pointlar belgilaydi. UTF-8 ularni bir baytdan to‘rt baytgacha bo‘lgan ketma-ketlikda ifodalaydi va ASCII bilan mos keladi. UTF-16 odatda bir yoki ikki 16 bitli kod birlikdan foydalanadi. “Unicode” va “UTF-8” ayni tushuncha emas: birinchisi belgilar repertuari va kod nuqtalarini, ikkinchisi ularni baytlarga aylantirish usulini anglatadi.

Fayl baytlarini noto‘g‘ri charset bilan talqin qilish mojibake deb ataladigan buzilgan matn hosil qiladi. Masalan, UTF-8 baytlari bir baytli eski kodlash sifatida o‘qilsa, o‘zbekcha apostrof yoki kirill belgilar noto‘g‘ri ko‘rinishi mumkin. Tizim fayl, HTTP sarlavhasi, ma’lumotlar bazasi ulanishi va ustun kodlashini izchil belgilashi lozim.

Bayt tartibi va sonlar

Ko‘p baytli sonlar big-endian yoki little-endian tartibida yoziladi. 0x12345678 qiymatining qaysi bayti avval kelishi protokol va apparat qoidalariga bog‘liq. Tarmoq protokollari ko‘pincha network byte order sifatida big-endianni tanlaydi. Formatni o‘quvchi tomon tartibni bilmasa, to‘g‘ri baytlar noto‘g‘ri songa aylanadi.

Suzuvchi nuqtali sonlar uchun IEEE 754 kabi standartlar bitlarning ishora, eksponent va mantissaga taqsimlanishini belgilaydi. Sana-vaqtni matn shaklida yozishda vaqt zonasi va aniqlik ham encodingning amaliy qismidir. Faqat 2026-07-16 12:00 yozuvi qaysi zonadagi vaqt ekanini bildirmaydi.

Transport ko‘rinishlari

Base64 ixtiyoriy baytlarni cheklangan matn alifbosida ifodalaydi. U elektron pochta, JSON yoki matnli konfiguratsiyada binary ma’lumot olib yurishga qulay, lekin hajmni taxminan uchdan birga oshiradi va shifrlash hisoblanmaydi. URL encoding esa URI ichida maxsus ma’noga ega belgilarni foizli shaklga o‘tkazadi. HTML entity encoding brauzerda matnni markup sifatida talqin qilinishidan saqlashga yordam beradi.

Kontekstlar almashtirilmaydi: URL uchun kodlangan matn SQL parametrizatsiyasi o‘rnini bosmaydi, HTML encoding JavaScript kontekstida har doim yetarli emas. Xavfsiz chiqish kodlashi ma’lumot joylashtiriladigan yakuniy parser qoidalariga mos tanlanadi.

Aniqlash va tekshirish

Encodingni faqat baytlarga qarab har doim ishonchli aniqlab bo‘lmaydi. BOM ayrim formatlarda ishora beradi, ammo u majburiy emas. Eng to‘g‘ri yondashuv format metama’lumotida kodlashni e’lon qilish, kirishda qat’iy dekodlash va yaroqsiz ketma-ketlikni yashirmasdan qayd etishdir. Normalizatsiya ham muhim: ko‘rinishi bir xil Unicode matn turli code point ketma-ketligida bo‘lishi mumkin, bu qidiruv va taqqoslashga ta’sir qiladi.

Encoding va encryption farqi

Encoding interoperabellik uchun ochiq qoidadir; compression hajmni kamaytiradi; encryption esa kalit bilan maxfiylik beradi. Base64 ko‘rinishidagi parol shifrlangan hisoblanmaydi, chunki uni istalgan qabul qiluvchi qayta dekodlaydi. Hashing ham qaytariladigan encoding emas. Protokol dizaynida bu vazifalar alohida qatlam sifatida tanlanadi: avval canonical serialization, zarur bo‘lsa compression, keyin autentifikatsiyalangan encryption. Tartib noto‘g‘ri bo‘lsa xavfsizlik yoki moslik buzilishi mumkin.

Migratsiya

Eski charsetdan UTF-8ga o‘tishda baytlarni ko‘r-ko‘rona qayta yozish yetarli emas. Dastlab haqiqiy manba encodingi aniqlanadi, yaroqsiz ketma-ketliklar ro‘yxati olinadi va namunalar egalar bilan tekshiriladi. Migratsiya nusxada bajarilib, satrlar soni, round-trip va muhim qidiruvlar solishtiriladi. Noto‘g‘ri dekodlangan matnni keyin UTF-8 sifatida saqlash buzilishni mustahkamlaydi.

Bog‘liq tushunchalar

Unicode, UTF-8, Character set, Base64, Endianness, Serialization, Escaping