Irlandiya tilidagi kod sahifasi oynalari. Agar buyruq satrini kodlash uchib ketgan bo'lsa, nima qilish kerak

Ma'lumki, Windows 10 interfeysning lokalizatsiyasini o'zgartirishingiz mumkin bo'lgan til paketlarini o'rnatishni qo'llab-quvvatlaydi operatsion tizim... Tizim tili tushunchasi bu bilan juda chambarchas bog'liq. Tizim tili til paketiga qo'shilgan til emas, balki tizimni o'rnatish paytida tanlangan tildir. Agar siz o'rnatish orqali tili o'zgartirilgan korporativ kompyuterda ishlayotgan bo'lsangiz MUI -paketlar, siz tizimda dastlab qaysi til ishlatilganligini bilishni xohlashingiz mumkin.

Tizim tilini aniqlashning bir necha yo'li mavjud.

Keling, ularni tartibda ko'rib chiqaylik.

DISM Console Utility dasturidan foydalanish

Buyruqlar qatorini administrator sifatida ishga tushiring va unda ishga tushiring dism buyrug'i/ onlayn / get-intl. Natijani bir necha soniya ichida oling.

Parametrga e'tibor bering "Birlamchi foydalanuvchi interfeysi tili" ... Uning ma'nosi tizim tili bo'ladi.

PowerShell konsolidan foydalanish

Konsolni administrator sifatida ishga tushiring va buyruqni bajaring :: O'rnatilgan madaniyat .

Parametr qiymati Ko'rsatiladigan ism tizim tiliga ishora qiladi. Shuningdek, parametrga e'tibor bering LCID, unda yozilgan til kodlari mavjud windows ro'yxatga olish kitobi(pastga qarang).

Ro'yxatga olish kitobi muharriridan foydalanish va jadvalni dekodlash

Jamoa regedit ro'yxatga olish kitobi muharririni oching va filialni kengaytiring

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ Language

Tahrirlovchi oynasining o'ng ustunida string parametrini toping (u eng pastda) va uning ma'nosini ko'ring.

U to'rt xonali kod bilan ifodalanadi, uni dekodlash uchun saytdagi dekodlash jadvalidan foydalanish kerak. MSDN... Bizning misolimizda kod 0419 rus tiliga mos keladi.

Krakozyabry- qanday so'z juda qiziq? Ushbu so'z odatda rus foydalanuvchilari tomonidan dasturlarda yoki Operatsion tizimning o'zida belgilarning noto'g'ri / noto'g'ri ko'rsatilishi (kodlanishi) uchun ishlatiladi.
Nima uchun bu sodir bo'ladi? Siz aniq javob topa olmaysiz. Bu bizning "sevimli" viruslarimizning hiyla-nayranglari bilan bog'liq bo'lishi mumkin, Windows operatsion tizimining noto'g'ri ishlashi (masalan, elektr quvvati o'chib, kompyuter o'chirilgan), dastur boshqasi bilan ziddiyat yaratgan bo'lishi mumkin yoki OS va hamma narsa "uchib ketdi". Umuman olganda, ko'p sabablar bo'lishi mumkin, lekin eng qiziqarlisi "Uni oldi va o'zini shunday sindirdi".
Biz maqolani o'qib chiqdik va dasturlarda va Windows operatsion tizimida kodlash bilan bog'liq muammoni qanday hal qilishni bilib oldik, chunki bu sodir bo'ldi.

Kim hali ham nima demoqchi ekanligimni tushunmaydi, bu erda bir nechtasi:


Aytgancha, men ham bir marta bu vaziyatga tushib qolganman va mening ish stolimda hali ham uni engishimga yordam bergan fayl bor. Shuning uchun men ushbu maqolani yozishga qaror qildim.

Windows-da kodlashni (shriftni) ko'rsatish uchun bir nechta "narsalar" javobgardir - bular til, ro'yxatga olish kitobi va OTning o'zi fayllari. Endi biz ularni alohida-alohida va nuqta bo'yicha tekshiramiz.

Dasturda yoki Windowsda ruscha (ruscha harflar) o'rniga krakozyabryni qanday olib tashlash va tuzatish mumkin.

1. Tekshirish tilni o'rnatish Unicode-ni qo'llab-quvvatlamaydigan dasturlar uchun. Ehtimol, u yo'qolgandir.

Shunday qilib, yo'l bo'ylab boring: Boshqaruv paneli - Mintaqaviy va til parametrlari - Kengaytirilgan yorlig'i
U erda biz rus tili bo'lishini qidiramiz.


Windows XP da, bunga qo'shimcha ravishda, pastki qismida "Konversiya jadvallari kod sahifalari" ro'yxati mavjud va unda 20880 raqami bilan chiziq mavjud. U yerda ham rus tilini bilishingiz kerak

6. Oxirgi nuqta, unda men sizga hamma narsani tuzatishga yordam bergan faylni beraman va shuning uchun uni esdalik sifatida qoldirdim. Mana arxiv:

Ichkarida ikkita fayl mavjud: krakozbroff.cmd va krakozbroff.reg

Ularning printsipi bir xil - ierogliflarni, kvadratlarni, savollarni yoki har tomonlama tuzatish undov belgilari dasturlarda va Windows operatsion tizimida (oddiy odamlarda krakozyabri). Men birinchisini ishlatdim va bu menga yordam berdi.

Va nihoyat, bir nechta maslahatlar:
1) Agar siz ro'yxatga olish kitobi bilan ishlayotgan bo'lsangiz, zaxira nusxasini yaratishni unutmang ( zaxira) agar biror narsa noto'g'ri bo'lsa.
2) Har bir banddan keyin 1-bandni tekshirish tavsiya etiladi.

Ana xolos. Endi siz dasturda yoki Windowsda Krakozyabralarni (kvadratchalar, ierogliflar, undov va savol belgilari) qanday tuzatishni bilasiz.

Windows-1251 - barcha rus versiyalari uchun standart 8-bitli kodlash bo'lgan belgilar to'plami va kodlash Microsoft Windows... Ushbu kodlash Sharqiy Evropa mamlakatlarida juda mashhur. Windows-1251 an'anaviy rus tipografiyasida ishlatiladigan deyarli barcha belgilar mavjudligi bilan boshqa 8-bitli kirill kodlashlari (CP866, KOI8-R va ISO 8859-5 kabi) bilan yaxshi taqqoslanadi. Oddiy matn(faqat urg'u belgisi yo'q). Kirill harflari alifbo tartibida.
Windows-1251 shuningdek, rus tiliga yaqin tillar uchun barcha belgilarni o'z ichiga oladi: belarus, ukrain, serb, makedon va bolgar.
Amalda, bu Windows-1251 kodlash UTF-8 tarqalishigacha Internetda ushlab turishi uchun etarli bo'ldi.

Windows belgilar kodi jadvali-1251

dekabrHexBelgi dekabrHexBelgi
000 00 YO'Q 128 80 Ђ
001 01 SOH 129 81 Ѓ
002 02 STX 130 82
003 03 ETX 131 83 ѓ
004 04 EOT 132 84
005 05 ENQ 133 85
006 06 ACK 134 86
007 07 BEL 135 87
008 08 BS 136 88
009 09 TAB 137 89
010 0ALF 138 8AЉ
011 0BVT 139 8B
012 0CFF 140 8CЊ
013 0DCR 141 8DЌ
014 0ESO 142 8EЋ
015 0FSI 143 8FЏ
016 10 DLE 144 90 ђ
017 11 DC1 145 91
018 12 DC2 146 92
019 13 DC3 147 93
020 14 DC4 148 94
021 15 NAK 149 95
022 16 SYN 150 96
023 17 ETB 151 97
024 18 JON 152 98
025 19 EM 153 99
026 1ASUB 154 9Aљ
027 1BESC 155 9B
028 1CFS 156 9Cњ
029 1DGS 157 9Dќ
030 1ERs 158 9Eћ
031 1FBIZ 159 9Fџ
032 20 SP 160 A0
033 21 ! 161 A1 Ў
034 22 " 162 A2ў
035 23 # 163 A3Ћ
036 24 $ 164 A4¤
037 25 % 165 A5Ґ
038 26 & 166 A6¦
039 27 " 167 A7§
040 28 ( 168 A8Yo
041 29 ) 169 A9©
042 2A* 170 AAЄ
043 2B+ 171 AB«
044 2C, 172 AC¬
045 2D- 173 AD­
046 2E. 174 AE®
047 2F/ 175 AFЇ
048 30 0 176 B0°
049 31 1 177 B1±
050 32 2 178 B2І
051 33 3 179 B3і
052 34 4 180 B4ґ
053 35 5 181 B5µ
054 36 6 182 B6
055 37 7 183 B7·
056 38 8 184 B8e
057 39 9 185 B9
058 3A: 186 BAє
059 3B; 187 BB»
060 3C< 188 Miloddan avvalgiј
061 3D= 189 BDЅ
062 3E> 190 BO'LINGѕ
063 3F? 191 Bfї
064 40 @ 192 C0 A
065 41 A 193 C1 B
066 42 B 194 C2 V
067 43 C 195 C3 G
068 44 D 196 C4 D
069 45 E 197 C5 E
070 46 F 198 C6 F
071 47 G 199 C7 Z
072 48 H 200 C8 VA
073 49 I 201 C9 Th
074 4AJ 202 CA TO
075 4BK 203 CB L
076 4CL 204 CC M
077 4DM 205 CD N
078 4EN 206 Idoralar O
079 4FO 207 CF P
080 50 P 208 D0 R
081 51 Q 209 D1 BILAN
082 52 R 210 D2 T
083 53 S 211 D3 bor
084 54 T 212 D4 F
085 55 U 213 D5 X
086 56 V 214 D6 C
087 57 V 215 D7 H
088 58 X 216 D8 Sh
089 59 Y 217 D9 SCH
090 5AZ 218 DA B
091 5B[ 219 JB S
092 5C\ 220 DC B
093 5D] 221 DD E
094 5E^ 222 DE YU
095 5F_ 223 DF MEN
096 60 ` 224 E0 a
097 61 a 225 E1 b
098 62 b 226 E2 v
099 63 c 227 E3 G
100 64 d 228 E4 d
101 65 e 229 E5 e
102 66 f 230 E6 f
103 67 g 231 E7 s
104 68 h 232 E8 va
105 69 i 233 E9 th
106 6Aj 234 EA Kimga
107 6Bk 235 EB l
108 6Cl 236 EC m
109 6Dm 237 ED n
110 6En 238 EE O
111 6Fo 239 EF P
112 70 p 240 F0 R
113 71 q 241 F1 Bilan
114 72 r 242 F2 T
115 73 s 243 F3 da
116 74 t 244 F4 f
117 75 u 245 F5 X
118 76 v 246 F6 c
119 77 w 247 F7 h
120 78 x 248 F8 w
121 79 y 249 F9 SCH
122 7Az 250 FA b
123 7B{ 251 FB s
124 7C| 252 FK b
125 7D} 253 FD eh
126 7E~ 254 FE Yu
127 7FDEL 255 FF men

Maxsus (nazorat) belgilar tavsifi

Dastlab, ASCII boshqaruv belgilari (diapazon 00-31, plyus 127) teletayp mashinalari, zarbli lenta kiritish va boshqalar kabi apparat qurilmalarini boshqarish uchun mo'ljallangan.
Boshqarish belgilaridan (gorizontal yorliqlar, chiziqli tasmalar va karetkalarni qaytarishdan tashqari) HTML hujjatlarida foydalanilmaydi.

Maxsus (nazorat) belgilar

Kod Tavsif
NUL, 00Null, bo'sh
SOH, 01Sarlavhaning boshlanishi, sarlavhaning boshlanishi
STX, 02TeXt ning boshlanishi, matnning boshlanishi
ETX, 03TeXt oxiri, matn oxiri
EOT, 04Transmissiyaning oxiri, uzatishning oxiri
ENQ, 05So'ramoq. Tasdiqlashni so'rayman
ACK, 06Tasdiqlash. tasdiqlayman
BEL, 07Qo'ng'iroq, qo'ng'iroq
BS, 08Backspace, bitta belgi orqaga qayting
TAB, 09Yorliq, gorizontal yorliq
LF, 0ASatr tasmasi, chiziq tasmasi
Endi ko'pgina dasturlash tillarida u \ n sifatida belgilanadi
VT, 0BVertikal yorliq, vertikal yorliq
FF, 0CShakl tasmasi, sahifa tasmasi, yangi sahifa
CR, 0DVagonga qaytish
Endi ko'pgina dasturlash tillarida u \ r sifatida belgilanadi
SO, 0EShift Out, bosib chiqarish qurilmasidagi siyoh tasmasi rangini o'zgartiring
SI, 0FShift In, bosib chiqarish qurilmasidagi siyoh tasmasi rangini orqaga qaytaring
DLE, 10Data Link Escape, kanalni ma'lumotlarni uzatishga o'tkazing
DC1, 11
DC2, 12
DC3, 13
DC4, 14
Qurilmani boshqarish, qurilmani boshqarish belgilari
NAK, 15Salbiy tan olish, tan olmang
SYN, 16Sinxronizatsiya. Sinxronlash belgisi
ETB, 17Matn blokining oxiri, matn blokining oxiri
JON, 18Bekor qilish, avval o'tganni bekor qilish
EM, 19O'rta oxiri, ma'lumot tashuvchining oxiri
SUB, 1AO'rinbosar O'tkazish vaqtida qiymati yo'qolgan yoki buzilgan belgi o'rniga joylashtirilgan
ESC, 1BQochish ketma-ketligi
FS, 1CFayl ajratuvchi, fayl ajratuvchi
GS, 1DGuruh ajratuvchi, guruh ajratuvchi
RS, 1EYozuvni ajratuvchi, yozuvni ajratuvchi
AQSh, 1FBirlik ajratuvchi, birlik ajratuvchi
DEL, 7FO'chirish, oxirgi belgini o'chirish.

Salom aziz blog o'quvchilari. Bugun biz siz bilan krakozyabrlar sayt va dasturlarda qayerdan kelgani, qanday matn kodlari mavjudligi va qaysilaridan foydalanish kerakligi haqida gaplashamiz. Keling, asosiy ASCII-dan boshlab, shuningdek, uning kengaytirilgan CP866, KOI8-R, Windows 1251 versiyalaridan boshlab va Unicode konsorsiumining UTF 16 va 8 zamonaviy kodlashlari bilan yakunlangan ularning rivojlanish tarixini batafsil ko'rib chiqaylik.

Ba'zilar uchun bu ma'lumot ortiqcha bo'lib tuyulishi mumkin, lekin siz mendan sudralib chiqqan krakozyabrlar (o'qib bo'lmaydigan belgilar to'plami) bo'yicha qancha savollarni olganimni bilasiz. Endi men barchani ushbu maqola matniga havola qilish va mustaqil ravishda o'z murabbolarimni topish imkoniyatiga ega bo'laman. Xo'sh, ma'lumotni o'zlashtirishga tayyor bo'ling va voqeani kuzatishga harakat qiling.

ASCII - lotin uchun asosiy matn kodlash

Matnni kodlashning rivojlanishi IT-industriyasining shakllanishi bilan bir vaqtda sodir bo'ldi va shu vaqt ichida ular juda ko'p o'zgarishlarga duch kelishdi. Tarixiy jihatdan hammasi EBCDIC-dan boshlandi, bu rus talaffuzida unchalik uyg'un emas edi, bu lotin alifbosi harflarini, arab raqamlarini va tinish belgilarini nazorat belgilar bilan kodlash imkonini berdi.

Ammo shunga qaramay, zamonaviy matn kodlarini ishlab chiqishning boshlang'ich nuqtasi mashhurdir ASCII(Axborot almashish uchun Amerika standart kodeksi, rus tilida odatda "aski" deb talaffuz qilinadi). Unda ingliz tilida so'zlashuvchi foydalanuvchilar tomonidan eng ko'p qo'llaniladigan birinchi 128 ta belgi - arab raqamlari va tinish belgilari tasvirlangan.

Hatto ASCII da tasvirlangan ushbu 128 ta belgi qavslar, xesh-liniyalar, yulduzchalar va boshqalar kabi ba'zi xizmat belgilarini o'z ichiga oladi. Aslida, ularni o'zingiz ko'rishingiz mumkin:

Aynan shu 128 ta belgi ASCII-ning asl nusxasi standart bo'lib qoldi va boshqa har qanday kodlashda siz ularni albatta uchratasiz va ular shu tartibda turadi.

Ammo haqiqat shundaki, bir bayt ma'lumot yordamida 128 emas, balki 256 ta turli xil qiymatlarni kodlash mumkin (ikkita sakkizning kuchi 256 ga teng), shuning uchun Asuka-ning asosiy versiyasidan keyin , butun bir seriya paydo bo'ldi kengaytirilgan ASCII kodlashlari, unda 128 ta asosiy belgilarga qo'shimcha ravishda milliy kodlash belgilarini (masalan, rus) kodlash mumkin edi.

Bu erda, ehtimol, tavsifda qo'llaniladigan sanoq tizimlari haqida bir oz ko'proq gapirish kerak. Birinchidan, barchangizga ma'lumki, kompyuter faqat ikkilik tizimdagi raqamlar bilan ishlaydi, ya'ni nollar va birlar bilan ("Mantiqiy algebra", agar kimdir kollej yoki maktabga borgan bo'lsa). , ularning har biri noldan boshlab 2 quvvatga ega va ettinchida ikkitagacha:

Bunday konstruksiyada atigi 256 ta nol va birlik birikmasi bo‘lishi mumkinligini tushunish qiyin emas.Sonni ikkilik sistemadan o‘nlik kasrga aylantirish juda oddiy. Siz faqat yuqorida mavjud bo'lgan ikkita kuchning barcha kuchlarini qo'shishingiz kerak.

Bizning misolimizda bu 1 (nol kuchga 2) plyus 8 (ikkitadan 3 kuchga), ortiqcha 32 (ikkidan beshinchi darajaga), ortiqcha 64 (oltinchi darajaga), ortiqcha 128 (ettinchi daraja). Hammasi bo'lib 233 dyuymni oladi o'nlik tizim hisoblash. Ko'rib turganingizdek, hamma narsa juda oddiy.

Ammo agar siz ASCII belgilar bilan jadvalga diqqat bilan qarasangiz, ular o'n oltilik kodlashda ifodalanganligini ko'rasiz. Misol uchun, yulduzcha Asukadagi 2A o'n oltilik soniga mos keladi. O‘n oltilik sanoq sistemasida arab raqamlaridan tashqari A (o‘n degani) dan F (o‘n besh)gacha lotin harflari ham qo‘llanilishini bilsangiz kerak.

Xo'sh, uchun ikkilik sonni o'n oltilik tizimga o'tkazish quyidagi oddiy va intuitiv usulga murojaat qiling. Yuqoridagi skrinshotda ko'rsatilganidek, har bir bayt ma'lumot to'rt bitdan iborat ikki qismga bo'linadi. Bu. har bir yarim baytda faqat o'n oltita qiymatni (ikkidan to'rtinchi darajagacha) ikkilik tizimda kodlash mumkin, ularni o'n oltilik raqam sifatida osongina ifodalash mumkin.

Bundan tashqari, baytning chap yarmida skrinshotda ko'rsatilgandek emas, balki noldan boshlab darajalarni qayta hisoblash kerak bo'ladi. Natijada, oddiy hisob-kitoblar orqali biz E9 raqami skrinshotda kodlanganligini bilib olamiz. Umid qilamanki, mening fikrlash jarayonim va bu jumboqning yechimi siz uchun aniq bo'ldi. Xo'sh, endi matn kodlash haqida gapirishni davom ettiramiz.

Asuka-ning kengaytirilgan versiyalari - CP866 va KOI8-R kodlashlari psevdografika bilan

Shunday qilib, biz ASCII haqida gapira boshladik, bu barcha zamonaviy kodlashlarni (Windows 1251, Unicode, UTF 8) ishlab chiqish uchun boshlang'ich nuqta edi.

Dastlab u lotin alifbosining atigi 128 ta belgisini, arab raqamlarini va boshqa narsalarni o'z ichiga olgan, ammo kengaytirilgan versiyada ma'lumotlarning bir baytida kodlanishi mumkin bo'lgan barcha 256 qiymatdan foydalanish mumkin bo'ldi. Bular. Aski-ga tilingiz harflarining belgilarini qo'shish mumkin bo'ldi.

Bu erda aniqlik kiritish uchun yana bir bor chetlanish kerak bo'ladi - Nima uchun bizga umuman kodlash kerak matnlar va nima uchun bu juda muhim. Kompyuteringiz ekranidagi belgilar ikki narsaga asoslanadi - barcha turdagi belgilarning vektor shakllari to'plami (namoyishlari) (ular kofayllarda joylashgan) va ushbu vektor shakllari to'plamidan chiqarishga imkon beruvchi kod. (shrift fayli) to'g'ri joyga kiritilishi kerak bo'lgan belgi.

Vektor shakllari uchun shriftlarning o'zi mas'ul ekanligi aniq, lekin kodlash uchun operatsion tizim va unda ishlatiladigan dasturlar javobgar. Bular. kompyuteringizdagi har qanday matn baytlar to'plami bo'ladi, ularning har biri aynan shu matnning bitta belgisini kodlaydi.

Ushbu matnni ekranda ko'rsatadigan dastur (matn muharriri, brauzer va boshqalar) kodni tahlil qilishda keyingi belgining kodlanishini o'qiydi va tegishli vektor shaklini qidiradi. kerakli fayl ushbu matn hujjatini ko'rsatish uchun ulangan shrift. Hammasi oddiy va oddiy.

Bu shuni anglatadiki, bizga kerak bo'lgan har qanday belgini (masalan, milliy alifbodan) kodlash uchun ikkita shart bajarilishi kerak - bu belgining vektor shakli ishlatiladigan shriftda bo'lishi kerak va bu belgi kengaytirilgan ASCII kodlashlarida kodlanishi mumkin. bir bayt. Shuning uchun bunday variantlarning to'liq to'plami mavjud. Faqat rus tilidagi belgilarni kodlash uchun kengaytirilgan Asuka-ning bir nechta turlari mavjud.

Masalan, dastlab paydo bo'lgan CP866, unda rus alifbosining belgilaridan foydalanish mumkin edi va bu ASCII ning kengaytirilgan versiyasi edi.

Bular. uni yuqori qismi Yuqoridagi skrinshotda keltirilgan Asuka-ning asosiy versiyasiga (128 lotincha harflar, raqamlar va boshqa har qanday axlat) to'liq mos keldi, lekin allaqachon CP866 kodli jadvalning pastki qismida skrinshotda ko'rsatilgan shakl mavjud edi va yana 128 ta belgini kodlashga ruxsat berilgan (ruscha harflar va barcha turdagi psevdografikalar):

Ko'ryapsizmi, o'ng ustunda raqamlar 8 dan boshlanadi, chunki 0 dan 7 gacha bo'lgan raqamlar asosiy ASCII qismiga ishora qiladi (birinchi skrinshotga qarang). Bu. CP866-dagi ruscha "M" harfi 9C kodiga ega bo'ladi (u 9 bilan mos keladigan chiziq va o'n oltilik tizimda C raqami bo'lgan ustunning kesishmasida joylashgan), uni bir bayt ma'lumotda yozish mumkin va agar ruscha belgilar bilan mos shrift mavjud, bu harf muammosiz matnda ko'rsatiladi.

Bu miqdor qayerdan kelgan? CP866 da psevdografiya? Gap shundaki, ruscha matn uchun ushbu kodlash o'sha mo'ynali yillarda, hozirgidek grafik operatsion tizimlarning tarqalishi bo'lmaganda ishlab chiqilgan. Va Dos va shunga o'xshash matnli operatsion tizimlarda psevdo-grafika matnlarning dizaynini qandaydir tarzda diversifikatsiya qilish imkonini berdi va shuning uchun CP866 va uning boshqa barcha tengdoshlari Asuka kengaytirilgan versiyalari toifasidan juda ko'p.

CP866 IBM tomonidan tarqatilgan, ammo bunga qo'shimcha ravishda ruscha belgilar uchun bir qator kodlashlar ishlab chiqilgan, masalan, ushbu turdagi (kengaytirilgan ASCII) tegishli bo'lishi mumkin. KOI8-R:

Uning ishlash printsipi biroz oldin tasvirlangan CP866 bilan bir xil bo'lib qoladi - matnning har bir belgisi bitta bayt bilan kodlangan. Skrinshotda KOI8-R jadvalining ikkinchi yarmi ko'rsatilgan, chunki birinchi yarmi ushbu maqoladagi birinchi skrinshotda ko'rsatilgan asosiy Asuka bilan to'liq mos keladi.

KOI8-R kodlash xususiyatlaridan shuni ta'kidlash mumkinki, uning jadvalidagi rus harflari, masalan, CP866-da bo'lgani kabi, alifbo tartibida emas.

Agar siz birinchi skrinshotga (barcha kengaytirilgan kodlashlarga kiritilgan asosiy qism) qarasangiz, KOI8-R rus tilidagi harflar lotin alifbosi undosh harflari bilan jadvalning bir xil kataklarida joylashganligini ko'rasiz. ular bilan jadvalning birinchi qismidan. Bu faqat bitta bitni (ikkidan ettinchi darajagacha yoki 128) tashlab, ruscha belgilardan lotin harflariga o'tish qulayligi uchun qilingan.

Windows 1251 - ASCII ning zamonaviy versiyasi va nima uchun krakozyabry chiqadi

Matnni kodlashning keyingi rivojlanishi grafik operatsion tizimlarning ommalashib borayotgani va ularda psevdografikadan foydalanish zarurati vaqt o'tishi bilan yo'qolganligi bilan bog'liq edi. Natijada, butun bir guruh paydo bo'ldi, ular aslida Asuka ning kengaytirilgan versiyalari edi (matnning bir belgisi faqat bir bayt ma'lumot bilan kodlangan), ammo psevdografik belgilardan foydalanmasdan.

Ular Amerika Standartlar Instituti tomonidan ishlab chiqilgan ANSI kodlashlariga tegishli edi. Oddiy tilda, rus tilini qo'llab-quvvatlaydigan versiya uchun hali ham kirill alifbosi nomi ishlatilgan. Bunga misol keltirish mumkin.

U ilgari qo'llanilgan CP866 va KOI8-R dan ijobiy farq qildi, chunki undagi psevdografik belgilarning o'rnini rus tipografiyasining etishmayotgan belgilari (aksent belgisidan tashqari), shuningdek, slavyan tillarida ishlatiladigan belgilar egallagan. rus tiliga yaqin (Ukraina, Belorus va boshqalar) ):

Rus tilidagi kodlashlarning bunday ko'pligi tufayli shrift ishlab chiqaruvchilari va ishlab chiqaruvchilari dasturiy ta'minot Men doimo boshim og'riydi va siz va men, aziz o'quvchilar, tez-tez o'sha mashhur odamlardan chiqib ketamiz krakozyabri matnda ishlatilgan versiya bilan chalkashlik yuzaga kelganda.

Ko'pincha ular orqali xabar jo'natish va qabul qilishda chiqib ketishdi elektron pochta, bu juda murakkab konversiya jadvallarini yaratishga olib keldi, bu esa aslida bu muammoni tubdan hal qila olmadi va ko'pincha yozishmalar foydalanuvchilari CP866, KOI8-R yoki Windows 1251 kabi rus kodlashlaridan foydalanganda mashhur krakozyabrlardan qochish uchun foydalandilar.

Darhaqiqat, ruscha matn o'rniga ko'tarilgan krakozyabry bu tilning kodlashidan noto'g'ri foydalanish natijasi bo'lib, u kodlangan tilga mos kelmaydi. matnli xabar dastlab.

Misol uchun, agar biz Windows 1251 kod jadvali yordamida CP866 bilan kodlangan belgilarni ko'rsatishga harakat qilsak, u holda xabar matnini to'liq almashtirib, xuddi shu krakozyabry (ma'nosiz belgilar to'plami) chiqadi.

Shunga o'xshash holat ko'pincha forumlarda yoki bloglarda ruscha belgilar bilan matn noto'g'ri saqlangan bo'lsa, odatiy saytda ishlatiladigan noto'g'ri kodlash yoki noto'g'ri kodlashda sodir bo'ladi. matn muharriri, bu kodga yalang'och ko'zga ko'rinmaydigan gagni qo'shadi.

Oxir-oqibat, ko'pchilik bu vaziyatdan juda ko'p kodlashlar va doimiy ravishda paydo bo'ladigan krakozyaberlardan charchagan edi, barcha mavjudlarini almashtiradigan va oxir-oqibat o'qilmaydigan matnlarning paydo bo'lishining asosiy muammosini hal qiladigan yangi universal variatsiyani yaratish uchun zarur shart-sharoitlar mavjud edi. . Bundan tashqari, xitoy tili kabi tillar muammosi mavjud edi, unda tilning belgilari 256 dan ortiq edi.

Unicode - Universal UTF kodlashlari 8, 16 va 32

Janubi-Sharqiy Osiyo tillari guruhidagi bu minglab belgilarni ASCII ning kengaytirilgan versiyalarida belgilarni kodlash uchun ajratilgan bir bayt ma'lumotda tasvirlab bo'lmaydi. Natijada nomli konsorsium tuzildi Unicode(Unicode - Unicode Consortium) universal matn kodlashning paydo bo'lishidan manfaatdor bo'lgan ko'plab IT-sanoat rahbarlari (dasturiy ta'minot ishlab chiqaruvchi, apparat kodlovchi, shrift yaratuvchilar) hamkorligida.

Unicode konsorsiumi homiyligida chiqarilgan birinchi variatsiya edi UTF 32... Kodlash nomidagi raqam bitta belgini kodlash uchun ishlatiladigan bitlar sonini bildiradi. 32 bit - bu yangi universal UTF kodlashda bitta belgini kodlash uchun kerak bo'ladigan 4 bayt ma'lumot.

Natijada, ASCII ning kengaytirilgan versiyasida va UTF-32 da kodlangan matnli bir xil fayl, ikkinchi holatda, hajmi (og'irligi) to'rt baravar ko'p bo'ladi. Bu yomon, lekin endi bizda ikkitadan o'ttiz soniyagacha bo'lgan belgilar sonini kodlash imkoniyati mavjud ( milliardlab belgilar, bu har qanday zaruriy qiymatni katta chegara bilan qoplaydi).

Ammo Evropa guruhi tillariga ega bo'lgan ko'plab mamlakatlar kodlashda bunday juda ko'p belgilarni umuman ishlatishga hojat yo'q edi, ammo UTF-32 ishlatilganda, ular hech qachon og'irlikni to'rt baravar oshirmaydilar. matnli hujjatlar, va buning natijasida Internet-trafik hajmi va saqlangan ma'lumotlar miqdori oshadi. Bu juda ko'p va hech kim bunday chiqindilarni ko'tara olmaydi.

Unicode ning rivojlanishi natijasida, UTF-16, bu shunchalik muvaffaqiyatli bo'ldiki, u sukut bo'yicha biz foydalanadigan barcha belgilar uchun asosiy maydon sifatida qabul qilindi. Bitta belgini kodlash uchun u ikki baytdan foydalanadi. Keling, bu ish qanday ko'rinishini ko'rib chiqaylik.

Windows operatsion tizimida siz "Ishga tushirish" - "Dasturlar" - "Aksessuarlar" - "Tizim asboblari" - "Symbol xaritasi" yo'lidan borishingiz mumkin. Natijada, tizimingizda o'rnatilgan barcha shriftlarning vektor shakllari bilan jadval ochiladi. Agar tanlasangiz " Qo'shimcha parametrlar»Unicode belgilar to'plami, siz har bir shrift uchun unga kiritilgan belgilarning butun diapazonini alohida ko'rishingiz mumkin.

Aytgancha, ulardan birortasini bosish orqali siz uning ikki baytini ko'rishingiz mumkin UTF-16 kodi to'rtta o'n oltilik raqamdan iborat:

UTF-16 da 16 bitli nechta belgini kodlash mumkin? 65536 (ikki o'n olti darajagacha) va aynan shu raqam Unicode-da asosiy maydon sifatida qabul qilingan. Bundan tashqari, u bilan va taxminan ikki million belgini kodlash usullari mavjud, ammo matnning bir million belgidan iborat kengaytirilgan maydoni bilan cheklangan.

Ammo hatto Unicode kodlashning ushbu muvaffaqiyatli versiyasi ham, masalan, faqat dasturlarni yozganlarga katta mamnuniyat keltirmadi. Ingliz tili, chunki ASCII ning kengaytirilgan versiyasidan UTF-16 ga o'tgandan so'ng, hujjatlarning og'irligi ikki baravar ko'paydi (Aski bir belgi uchun bir bayt va UTF-16 da bir xil belgi uchun ikki bayt).

Unicode konsorsiumidagi hamma va hamma narsani qondirish uchun aynan shu narsani o'ylab topishga qaror qilindi. o'zgaruvchan uzunlikdagi kodlash... Ular uni UTF-8 deb atashdi. Nomidagi sakkizinchi raqamga qaramasdan, u haqiqatan ham o'zgaruvchan uzunlikka ega, ya'ni. matndagi har bir belgi birdan olti baytgacha bo'lgan ketma-ketlikda kodlanishi mumkin.

Amalda, UTF-8da faqat bir baytdan to'rt baytgacha bo'lgan diapazon qo'llaniladi, chunki to'rt bayt koddan tashqari hech narsani nazariy jihatdan tasavvur qilish ham mumkin emas. Undagi barcha lotin belgilar xuddi eski ASCII-dagi kabi bir baytga kodlangan.

Shunisi e'tiborga loyiqki, faqat lotin alifbosini kodlashda, hatto Unicode-ni tushunmaydigan dasturlar ham UTF-8-da kodlangan narsalarni o'qiydi. Bular. Asuka-ning asosiy qismi hozirgina Unicode konsorsiumining ushbu miyasiga o'tdi.

UTF-8-dagi kirillcha belgilar ikki baytda, masalan, gruzin harflari esa uch baytda kodlangan. Unicode konsortsiumi UTF 16 va 8-ni yaratgandan so'ng asosiy muammoni hal qildi - endi bizda shriftlarda bitta kod maydoni mavjud... Va endi ularning ishlab chiqaruvchilari uni faqat kuchli va imkoniyatlaridan kelib chiqqan holda matn belgilarining vektor shakllari bilan to'ldirishlari mumkin. Endi hatto to'plamlarda ham.

Yuqoridagi "Belgilar jadvali" da siz turli xil shriftlar turli sonli belgilarni qo'llab-quvvatlashini ko'rishingiz mumkin. Unicode-ga boy ba'zi shriftlar juda og'ir bo'lishi mumkin. Ammo endi ular turli xil kodlashlar uchun yaratilganligi bilan emas, balki shrift ishlab chiqaruvchisi ma'lum vektor shakllari bilan bitta kod maydonini oxirigacha to'ldirganligi yoki to'ldirmaganligi bilan farq qiladi.

Rus harflari o'rniga Krakozyabry - uni qanday tuzatish kerak

Keling, matn o'rniga krakozyabralar qanday paydo bo'lishini yoki boshqacha qilib aytganda, ruscha matn uchun to'g'ri kodlash qanday tanlanganligini ko'rib chiqaylik. Aslida, u aynan shu matnni yoki matn qismlari yordamida kodni yaratadigan yoki tahrirlaydigan dasturda o'rnatiladi.

Tahrir qilish va yaratish uchun matnli fayllar Men shaxsan menimcha, juda yaxshisini ishlataman. Biroq, u yana yuzlab yaxshi dasturlash va belgilash tillarining sintaksisini ajratib ko'rsatishi mumkin, shuningdek, plaginlar yordamida kengaytirish qobiliyatiga ega. O'qing batafsil ko'rib chiqish taqdim etilgan havoladan ushbu ajoyib dastur.

V yuqori menyu Notepad ++ da "Kodlashlar" elementi mavjud bo'lib, unda siz mavjud versiyani saytingizda sukut bo'yicha ishlatiladigan versiyaga o'zgartirishingiz mumkin:

Joomla 1.5 va undan yuqori versiyadagi saytlarda, shuningdek WordPress-da blogda yoriqlar paydo bo'lishining oldini olish uchun variantni tanlang. BOMsiz UTF 8... BOM prefiksi nima?

Gap shundaki, YUTF-16 kodlash ishlab chiqilganda, ular negadir unga belgilar kodini to'g'ridan-to'g'ri ketma-ketlikda (masalan, 0A15) va teskari (150A) yozish qobiliyatini biriktirishga qaror qilishdi. . Va dasturlar kodlarni qaysi ketma-ketlikda o'qishni tushunishi uchun va ixtiro qilingan BOM Hujjatlarning eng boshida uchta qo'shimcha bayt qo'shilishi bilan ifodalangan (bayt tartibi belgisi yoki boshqacha qilib aytganda, imzo).

UTF-8 kodlashda Unicode konsorsiumida BOM taqdim etilmaydi va shuning uchun imzo qo'shilishi (hujjatning boshiga eng mashhur qo'shimcha uch bayt) shunchaki ba'zi dasturlarning kodni o'qishiga to'sqinlik qiladi. Shuning uchun, fayllarni UTP ga saqlashda biz har doim BOMsiz (imzosiz) variantni tanlashimiz kerak. Shunday qilib, siz oldinga boring krakozyabrovdan o'zingizni himoya qiling.

Shunisi e'tiborga loyiqki, Windows-dagi ba'zi dasturlar buni qila olmaydi (ular BOMsiz UTP-8da matnni saqlay olmaydi), masalan, mashhur Windows Notepad. U hujjatni UTF-8 da saqlaydi, lekin baribir boshiga imzo qo‘shadi (uchta qo‘shimcha bayt). Bundan tashqari, bu baytlar har doim bir xil bo'ladi - kodni to'g'ridan-to'g'ri ketma-ketlikda o'qing. Ammo serverlarda bu arzimas narsa tufayli muammo paydo bo'lishi mumkin - krakozyabri chiqadi.

Shunday qilib, hech qanday tarzda oddiy Windows bloknotidan foydalanmang saytingiz hujjatlarini tahrirlash uchun, agar siz krakozyabrlarning ko'rinishini xohlamasangiz. Eng yaxshi va eng oddiy variant Men yuqorida aytib o'tilgan muharrir Notepad ++ deb hisoblayman, u deyarli hech qanday kamchiliklarga ega emas va faqat afzalliklardan iborat.

Notepad ++ da, kodlashni tanlashda siz matnni Unicode standartiga juda yaqin bo'lgan UCS-2 kodlashiga aylantirishingiz mumkin. Shuningdek, Notepad-da ANSI-da matnni kodlash mumkin bo'ladi, ya'ni. Rus tiliga nisbatan biz buni Windows 1251 dan biroz yuqorida tasvirlab beramiz. Bu ma'lumot qayerdan olingan?

U operatsiya xonasining reestrida ro'yxatga olingan. Windows tizimlari- ANSI holatida qaysi kodlashni tanlash kerak, OEM holatida qaysi birini tanlash kerak (rus tili uchun u CP866 bo'ladi). Agar siz kompyuteringizga boshqa standart tilni o'rnatgan bo'lsangiz, bu kodlashlar o'sha til uchun ANSI yoki OEM toifasidagi o'xshashlar bilan almashtiriladi.

Hujjatni Notepad ++ da kerak bo'lgan kodlashda saqlaganingizdan yoki tahrirlash uchun saytdan hujjatni ochganingizdan so'ng, muharrirning pastki o'ng burchagida uning nomini ko'rishingiz mumkin:

Krakozyabrovdan qochish uchun, yuqorida tavsiflangan harakatlarga qo'shimcha ravishda, uning sarlavhasida yozish foydali bo'ladi manba kodi Saytning barcha sahifalarida server yoki mahalliy xostda chalkashliklarga yo'l qo'ymaslik uchun ushbu kodlash haqida ma'lumot.

Umuman olganda, Html-dan tashqari barcha gipermatn belgilash tillarida matn kodlashni ko'rsatadigan maxsus xml deklaratsiyasi qo'llaniladi.

Kodni tahlil qilishni boshlashdan oldin brauzer qaysi versiyadan foydalanilayotganini va ushbu tilning belgilar kodlari qanday talqin qilinishi kerakligini bilib oladi. Shunisi e'tiborga loyiqki, agar siz hujjatni standart unicode-da saqlasangiz, ushbu xml deklaratsiyasini o'tkazib yuborishingiz mumkin (agar BOM bo'lmasa, kodlash UTF-8 yoki BOM bo'lsa YUTF-16 deb hisoblanadi).

Html hujjatida kodlash ko'rsatilgan Meta element, bosh teglari ochish va yopish orasiga yoziladi:

... ...

Ushbu yozuv qabul qilinganidan ancha farq qiladi, ammo ayyorlikda kiritilgan yangisiga to'liq mos keladi. Html standarti 5 va u hozirda foydalanilayotgan har qanday brauzer tomonidan 100% to'g'ri tushuniladi.

Nazariy jihatdan, Html hujjatining kodlanishini ko'rsatadigan Meta elementi yaxshiroq o'rnatilgan bo'lar edi hujjatning sarlavhasida iloji boricha yuqori Shunday qilib, matnda asosiy ANSI dan bo'lmagan (har doim to'g'ri va har qanday o'zgarishlarda) bo'lmagan birinchi belgi bilan uchrashish vaqtida brauzer allaqachon ushbu belgilar kodlarini qanday izohlash haqida ma'lumotga ega bo'lishi kerak.

Omad sizga! Tez orada blog sayti sahifalarida ko'rishguncha

Sizni qiziqtirishi mumkin

URL manzillar nima, sayt uchun mutlaq va nisbiy havolalar o'rtasidagi farq nima
OpenServer - zamonaviy mahalliy server va undan WordPress-ni kompyuterga o'rnatish uchun foydalanish misoli
Chmod nima, fayl va papkalarni (777, 755, 666) tayinlash uchun qanday ruxsatlar va buni PHP orqali qanday qilish kerak
Saytda va onlayn do'konda Yandex qidiruvi