JavaRush /Блоги Java /Random-TG /Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва...
articles
Сатҳи

Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юникод (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст

Дар гурӯҳ нашр шудааст
Имрӯз мо дар бораи он сӯҳбат хоҳем кард, ки кракозябрҳо дар вебсайт ва барномаҳо аз куҷо пайдо мешаванд, кадом рамзгузории матнӣ мавҷуданд ва кадомашон бояд истифода шаванд. Биёед ба таърихи рушди онҳо аз ASCII-и асосӣ сар карда, инчунин versionҳои васеъи он CP866, KOI8-R, Windows 1251 ва бо рамзгузории муосири консорсиуми Юниcode UTF 16 ва 8 хотима диҳем. Ҷадвали Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 1мундариҷа: Барои баъзеҳо, ин маълумот метавонад нолозим ба назар расад, аммо оё шумо медонед, ки ман чанд саволро дар бораи кракозябрҳои хазанда (маҷмӯи аломатҳои хонданашаванда) мегирам. Акнун ман имкон пайдо мекунам, ки ҳама ба матни ин мақола муроҷиат кунам ва хатоҳои худро пайдо кунам. Хуб, барои азхуд кардани маълумот омода шавед ва кӯшиш кунед, ки ҷараёни ҳикояро пайгирӣ кунед.

ASCII - рамзгузории асосии матн барои алифбои лотинӣ

Рушди рамзгузории матнӣ ҳамзамон бо ташаккули саноати IT ба вуқӯъ пайваст ва дар ин муддат онҳо тавонистаанд тағйироти зиёдеро аз сар гузаронанд. Таърихан, ҳамааш аз EBCDIC оғоз ёфт, ки дар талаффузи русӣ хеле номувофиқ буд ва имкон дод, ки ҳарфҳои алифбои лотинӣ, рақамҳои арабӣ ва аломатҳои пунктуатсия бо аломатҳои назоратӣ рамзгузорӣ карда шаванд. Аммо ба ҳар ҳол, нуқтаи ибтидоии таҳияи рамзгузории матнии муосир бояд ASCII (Кодекси стандартии амрикоии мубодилаи иттилоот, ки дар забони русӣ одатан ҳамчун "пурсед" талаффуз мешавад) дониста шавад. Он 128 аломати аввалро тавсиф мекунад, ки аз ҷониби корбарони инглисзабон бештар истифода мешаванд - ҳарфҳои лотинӣ, рақамҳои арабӣ ва аломатҳои пунктуатсия. Ин 128 аломате, ки дар ASCII тавсиф шудааст, инчунин баъзе аломатҳои хидматрасониро, аз қабor қавс, аломатҳои ҳаш, ситорача ва ғайраро дар бар мегиранд. Дар асл, шумо метавонед онҳоро худатон бубинед: Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 2Маҳз ҳамин 128 аломат аз versionи аслии ASCII стандарт шуданд ва дар ҳама рамзгузории дигар шумо онҳоро ҳатман пайдо хоҳед кард ва онҳо бо ин тартиб пайдо мешаванд. Аммо далел дар он аст, ки бо ёрии як byte маълумот шумо метавонед на 128, балки то 256 арзишҳои гуногунро рамзгузорӣ кунед (ду ба қуввати ҳашт баробар ба 256), бинобар ин, пас аз versionи асосии Асука, тамоми силсилаи рамзгузории васеъшудаи ASCII пайдо шуданд , ки дар онҳо имкон дошт, ба ғайр аз 128 аломати асосӣ низ бо истифода аз рамзҳои миллии рамзгузорӣ (масалан, русӣ) рамзгузорӣ карда шавад. Дар ин ҷо, эҳтимолан дар бораи системаҳои рақамие, ки дар тавсиф истифода мешаванд, каме бештар гуфтан лозим аст. Аввалан, чунон ки ба ҳама маълум аст, компютер танҳо бо рақамҳо дар системаи дуӣ кор мекунад, яъне бо сифрҳо ва якҳо («алгебраи булӣ», агар касе онро дар институт ё мактаб гирифта бошад). Як byte аз ҳашт бит иборат аст, ки ҳар яке аз ду ба дараҷаи ду, сар карда аз сифр ва то ду то ҳафтумро ифода мекунад: Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 3 Фаҳмидани он душвор нест, ки ҳамаи таркиби имконпазири сифрҳо ва якҳо дар чунин сохтмон метавонад танҳо 256 бошад. Табдил додани адад аз системаи дуӣ ба даҳӣ хеле оддӣ аст. Ба шумо танҳо лозим аст, ки ҳамаи қудратҳои дуро бо қудратҳои болотар аз онҳо ҷамъ кунед. Дар мисоли мо, ин 1 (2 ба қудрати сифр) плюс 8 (ду ба дараҷаи 3), плюс 32 (ду ба дараҷаи панҷум), плюс 64 (ба дараҷаи шашум), ҷамъи 128 мешавад. (ба қудрати ҳафтум). Ҳамагӣ 233 ададро дар шакли даҳӣ ташкил медиҳад. Тавре ки шумо мебинед, ҳама чиз хеле оддӣ аст. Аммо агар шумо ба ҷадвал бо аломатҳои ASCII бодиққат назар кунед, шумо хоҳед дид, ки онҳо дар рамзгузории шонздаҳӣ муаррифӣ шудаанд. Масалан, "ситорача" ба рақами шонздаҳӣ 2А дар Аски мувофиқат мекунад. Шояд шумо медонед, ки дар системаи шумораҳои шонздаҳӣ ба ҷуз рақамҳои арабӣ ҳарфҳои лотинии А (даҳ) то F (понздаҳ) низ истифода мешаванд. Хуб, барои табдил додани рақами дуӣ ба шонздаҳӣба усули оддии зерин муроҷиат кунед. Ҳар як byte информатсия ба ду қисм аз чор бит тақсим мешавад. Онхое. Дар ҳар ним byte танҳо шонздаҳ арзиш (аз ду то қудрати чорум) метавонад дар дуӣ рамзгузорӣ карда шавад, ки онро ба осонӣ ҳамчун рақами шонздаҳӣ муаррифӣ кардан мумкин аст. Гузашта аз ин, дар нимаи чапи byte, дараҷаҳоро аз сифр сар карда дубора ҳисоб кардан лозим меояд, на тавре ки дар скриншот нишон дода шудааст. Дар натиҷа, мо мегирем, ки рақами E9 дар скриншот рамзгузорӣ шудааст. Умедворам, ки рафти андешаҳои ман ва роҳи ҳалли ин муаммо бароятон равшан буд. Хуб, ҳоло биёед сухан дар бораи рамзгузории матнро идома диҳем.

Версияҳои васеъшудаи Asuka - CP866 ва рамзгузории KOI8-R бо псевдографӣ

Ҳамин тавр, мо сухан дар бораи ASCII оғоз кардем, ки он гӯё нуқтаи ибтидоии таҳияи ҳама рамзгузории муосир буд (Windows 1251, Юниcode, UTF 8). Дар аввал, он танҳо 128 аломати алифбои лотинӣ, рақамҳои арабӣ ва чизи дигарро дар бар мегирифт, аммо дар versionи васеъ истифода бурдани ҳамаи 256 арзишҳо имконпазир гардид, ки дар як byte маълумот рамзгузорӣ карда мешаванд. Онхое. Ба Аски аломатҳои ҳарфҳои забони худро илова кардан имконпазир шуд. Дар ин ҷо ба мо лозим меояд, ки боз як бори дигар канорагирӣ кунем, то фаҳмонем , ки чаро рамзгузории матн умуман лозим аст ва чаро он ин қадар муҳим аст. Аломатҳо дар экрани компютери шумо дар асоси ду чиз ташаккул меёбанд - маҷмӯи шаклҳои вектории (намояндагӣ) аломатҳои гуногун (онҳо дар файлҳои дорои ҳуруфҳое, ки дар компютери шумо насб шудаанд) ва рамзе, ки ба шумо имкон медиҳад маҳз ҳамон якро берун кунед. аз ин маҷмӯи шаклҳои векторӣ (файли шрифт). аломате, ки бояд дар ҷои дуруст ҷойгир карда шавад. Маълум аст, ки худи шрифтҳо барои шаклҳои векторӣ масъуланд, аммо системаи оператсионӣ ва барномаҳои дар он истифодашаванда барои рамзгузорӣ масъуланд. Онхое. ҳама гуна матн дар компютери шумо маҷмӯи byteҳо хоҳад буд, ки ҳар кадоми онҳо як аломати ягонаи ин матнро рамзгузорӣ мекунад. Барномае, ки ин матнро дар экран намоиш медиҳад (муҳаррири матн, браузер ва ғ.), ҳангоми таҳлor code рамзгузории аломати навбатиро мехонад ва дар файли шрифти зарурӣ шакли вектории мувофиқро меҷӯяд, ки барои намоиши ин матн пайваст карда шудааст. ҳуҷҷати матнӣ. Ҳама чиз оддӣ ва оддӣ аст. Ин маънои онро дорад, ки барои рамзгузории ҳар як аломати ба мо лозима (масалан, аз алифбои миллӣ) бояд ду шарт иҷро карда шавад: шакли вектории ин аломат бояд дар шрифти истифодашуда бошад ва ин аломатро метавон бо рамзгузории васеъшудаи ASCII рамзгузорӣ кард. дар як byte. Аз ин рӯ, шумораи зиёди чунин вариантҳо вуҷуд доранд. Танҳо барои рамзгузории аломатҳои забони русӣ, якчанд навъҳои васеъшудаи Аска мавҷуданд. Масалан, CP866 дар ибтидо пайдо шуд , ки қобorяти истифодаи аломатҳои алифбои русиро дошт ва он versionи васеъшудаи ASCII буд. Яъне, қисми болоии он бо versionи асосии Аска (128 ҳарфҳои лотинӣ, рақамҳо ва дигар ғазабҳо), ки дар скриншот дар боло оварда шудааст, комилан мувофиқат мекард, аммо қисми поёни ҷадвал бо рамзгузории CP866 намуди зоҳирии дар Намуди скриншот дар поён ва иҷозат дода мешавад, ки 128 аломати дигарро рамзгузорӣ кунад (ҳарфҳои русӣ ва ҳама навъҳои псевдографика): Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 4 Шумо мебинед, дар сутуни рост рақамҳо аз 8 оғоз мешаванд, зеро рақамҳои аз 0 то 7 ба қисми асосии ASCII ишора мекунанд (ниг. скриншоти аввал). Ҳамин тариқ, ҳарфи кирorи «М» дар CP866 дорои рамзи 9С хоҳад буд (он дар чорроҳаи хати мувофиқ бо 9 ва сутун бо рақами C дар системаи шумораҳои шонздаҳӣ ҷойгир аст), ки онро дар як byte маълумот навиштан мумкин аст. , ва агар шрифти мувофиқ бо ҳарфҳои русӣ мавҷуд бошад, ин ҳарф дар матн бидуни мушкилот пайдо мешавад. Ин маблағ аз куҷо пайдо шуд?псевдография дар CP866 ? Гап дар сари он аст, ки ин рамзгузорӣ барои матни русӣ ҳанӯз дар он солҳое таҳия шуда буд, ки системаҳои оператсионии графикӣ мисли ҳозира паҳн нашуда буданд. Ва дар Dosa ва системаҳои амалиётии шабеҳи матн, псевдография имкон дод, ки ҳадди аққал тарҳи матнҳоро диверсификатсия кунад ва аз ин рӯ CP866 ва ҳамаи дигар ҳамсолони он аз категорияи versionҳои васеъшудаи Асука дар он зиёданд. CP866 аз ҷониби IBM паҳн карда шуд, аммо илова бар ин, барои аломатҳои забони русӣ як қатор рамзгузорӣ таҳия карда шуд, масалан, KOI8-R-ро метавон ба як намуд мансуб кард (ASCII васеъ) : Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 5Принсипи кори он ҳамон тавре боқӣ мемонад ки CP866 каме пештар тавсиф шудааст - Ҳар як аломати матн ҳамчун як byte рамзгузорӣ карда мешавад. Дар экран нишон медиҳад, ки нимаи дуюми ҷадвали KOI8-R, зеро нимаи аввал комилан бо Asuka асосӣ мувофиқ аст, ки дар Намудори аввал дар ин мақола нишон дода шудааст. Дар байни хусусиятҳои рамзгузории KOI8-R метавон қайд кард, ки ҳарфҳои кириллӣ дар ҷадвали он дар тартиби алифбо нестанд, чунон ки дар CP866 анҷом дода шудааст. Агар шумо ба скриншоти аввалини скриншот нигаред (қисми асосӣ, ки ба ҳама рамзҳои васеъ дохил карда шудааст), шумо хоҳед дид, ки дар KOI8-R ҳарфҳои русӣ дар як ҳуҷайраҳои ҷадвал ҳамчун ҳарфҳои мувофиқи алифбои лотинӣ ҷойгир шудаанд. аз кисми якуми чадвал. Ин барои роҳати гузаштан аз ҳарфҳои русӣ ба лотинӣ тавассути партофтани ҳамагӣ як бит (ду ба қудрати ҳафтум ё 128) анҷом дода шуд.

Windows 1251 - versionи муосири ASCII ва чаро тарқишҳо пайдо мешаванд

Инкишофи минбаъдаи рамзгузории матн аз он сабаб буд, ки системаҳои оператсионии графикӣ маъруфият пайдо карда, зарурати истифодаи псевдография дар онҳо бо мурури замон аз байн рафт. Дар натиҷа, як гурӯҳи том ба вуҷуд омад, ки аслан versionҳои васеъшудаи Асука (як аломати матн танҳо бо як byte маълумот рамзгузорӣ карда мешавад), вале бидуни истифодаи аломатҳои псевдографӣ буданд. Онҳо ба рамзгузории ба ном ANSI тааллуқ доштанд, ки аз ҷониби Институти Стандартҳои Амрико таҳия шудааст. Ба истилоҳи маъмул, номи кириллӣ низ барои versionи бо дастгирии забони русӣ истифода мешуд. Намунаи ин метавонад Windows 1251 бошад . Он аз CP866 ва KOI8-R, ки қаблан истифода мешуданд, бо он фарқ мекард, ки ҷои аломатҳои псевдографиро дар он рамзҳои нопадидшудаи типографияи русӣ (ба истиснои аломати акцент), инчунин аломатҳои дар забонҳои славянӣ наздик ба истифодашуда гирифтаанд. Забони русӣ (украинӣ, белорусӣ ва ғ.). ): Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 6Аз сабаби фаровонии рамзгузории забони русӣ, истеҳсолкунандагони ҳуруфҳо ва нармафзорҳо доимо дарди сар доштанд ва ману шумо, хонандагони азиз, аксар вақт бо ҳамон хатогиҳои маъруф дучор мешудем. вакте ки бо versionи дар матн истифодашуда иштибох ба амал омад. Бисёр вақт онҳо ҳангоми фиристодан ва қабули паёмҳо тавассути почтаи электронӣ пайдо мешуданд, ки боиси эҷоди ҷадвалҳои хеле мураккаби табдилдиҳӣ мешуд, ки воқеан ин масъаларо ба таври куллӣ ҳал карда наметавонистанд ва аксар вақт корбарон транслитератсияи ҳарфҳои лотиниро барои мукотиба истифода мебурданд. ҳангоми истифодаи рамзгузории русӣ ба мисли CP866, KOI8-R ё Windows 1251 аз лаҳҷаҳои бадномшуда канорагирӣ кунед. Дарвоқеъ, тарқишҳое, ки ба ҷои матни русӣ пайдо мешаванд, натиҷаи истифодаи нодурусти рамзгузории забони додашуда буданд, ки ба забони дар ки паёми матнӣ дар аввал рамзгузорӣ шуда буд. Фарз мекунем, ки агар шумо кӯшиш кунед, ки аломатҳои бо истифода аз CP866 бо истифода аз ҷадвали codeи Windows 1251 рамзшударо намоиш диҳед, он гоҳ ҳамон як бемаънӣ (маҷмӯи аломатҳои бемаънӣ) матни паёмро комилан иваз мекунанд. Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 7Вазъияти ба ин монанд аксар вақт ҳангоми таъсис ва таъсиси вебсайтҳо, форумҳо ё блогҳо ба вуҷуд меояд, вақте ки матн бо аломатҳои русӣ иштибоҳан дар рамзгузории нодурусте, ки дар сайт ба таври нобаёнӣ истифода мешавад ё дар муҳаррири матнии нодуруст, ки гаҷҳои ноаёнро илова мекунад, сабт карда мешавад. ба code бо чашми оддй. Дар ниҳоят, бисёр одамон аз ин вазъ бо рамзгузории зиёд ва пайваста ғазаб кардан хаста шуданд ва барои эҷоди як варианти нави универсалӣ, ки ҳама вариантҳои мавҷударо иваз мекунад ва мушкилотро бо пайдоиши матнҳои хонданашаванда ҳал мекунад, ба вуҷуд омад. . Илова бар ин, мушкилоти забонҳо ба монанди чинӣ вуҷуд дошт, ки дар он ҷо аломатҳои забонӣ нисбат ба 256 адад зиёд буданд.

Юниcode - рамзгузории универсалии UTF 8, 16 ва 32

Ин ҳазорон аломатҳои гурӯҳи забонҳои Осиёи Ҷанубу Шарқӣ дар як byte маълумоте, ки барои рамзгузории аломатҳо дар versionҳои васеъи ASCII ҷудо карда шуда буд, тасвир кардан мумкин набуд. Дар натиҷа, консорсиум бо номи Юниcode (Юниcode Консорсиум) бо ҳамкории бисёре аз пешвоёни соҳаи ТИ (онҳое, ки нармафзор истеҳсол мекунанд, сахтафзорро рамзгузорӣ мекунанд, шрифтҳо месозанд) таъсис дода шуд, ки ба пайдоиши рамзгузории универсалии матн таваҷҷӯҳ доштанд. Варианти аввалине, ки таҳти сарпарастии Консорсиуми Юниcode бароварда шуд, UTF 32 буд . Рақам дар номи рамзгузорӣ маънои шумораи битҳоро дорад, ки барои рамзгузории як аломат истифода мешаванд. 32 бит ба 4 byte маълумот баробар аст, ки барои рамзгузории як аломати ягона дар рамзгузории нави универсалии UTF лозим аст. Дар натиҷа, ҳамон файл бо матне, ки дар versionи васеъшудаи ASCII ва дар UTF-32 рамзгузорӣ шудааст, дар ҳолати охирин андозаи (вазни) чор маротиба калонтар хоҳад буд. Ин бад аст, аммо ҳоло мо имкон дорем, ки бо истифода аз UTF шумораи аломатҳои баробар ба ду то сию дуюмро рамзгузорӣ кунем ( миллиардҳо аломатҳо , ки ҳар як арзиши воқеии заруриро бо маржаи бузург фаро мегиранд). Аммо ба бисёр кишварҳо бо забонҳои гурӯҳи аврупоӣ лозим набуд, ки ин миқдори зиёди аломатҳоро дар рамзгузорӣ истифода баранд, аммо ҳангоми истифодаи UTF-32, онҳо бе ягон сабаб вазни ҳуҷҷатҳои матниро чор маротиба зиёд карданд, ва дар натиҷа, афзоиши ҳаҷми трафики интернет ва ҳаҷми маълумоти захирашуда. Ин хеле зиёд аст ва ба ин гуна партовхо касе наметавонист. Дар натиҷаи таҳияи Юниcode, UTF-16 пайдо шуд , ки он чунон муваффақ шуд, ки он ба таври нобаёнӣ ҳамчун фазои асосӣ барои ҳама аломатҳое, ки мо истифода мебарем, қабул карда шуд. Он барои рамзгузории як аломат ду byte истифода мебарад. Биёед бубинем, ки ин чиз чӣ гуна аст. Дар системаи оператсионии Windows, шумо метавонед бо роҳи "Оғоз" - "Барномаҳо" - "Асосҳо" - "Асбобҳои система" - "Ҷадвали аломатҳо" гузаред. Дар натиҷа, ҷадвал бо шаклҳои вектории ҳамаи шрифтҳои дар системаи шумо насбшуда кушода мешавад. Агар шумо маҷмӯи аломатҳои Юниcodeро дар "Имконоти пешрафта" интихоб кунед, шумо метавонед барои ҳар як шрифт тамоми диапазони аломатҳои ба он дохилшударо алоҳида бубинед. Дар омади гап, бо пахш кардани яке аз онҳо, шумо метавонед рамзи дуbyteаи онро дар формати UTF-16 , ки аз чор рақами шонздаҳӣ иборат аст, дидан мумкин аст: Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 8Дар UTF-16 бо истифода аз 16 бит чанд аломатро рамзгузорӣ кардан мумкин аст? 65,536 (ду ба қудрати шонздаҳ) ва ин рақамест, ки ҳамчун фазои асосӣ дар Юниcode қабул шудааст. Илова бар ин, роҳҳои рамзгузории тақрибан ду миллион аломат бо истифода аз он вуҷуд доранд, аммо онҳо бо фазои васеъшудаи як миллион аломати матн маҳдуд буданд. Аммо ҳатто ин versionи муваффақи рамзгузории Юниcode барои онҳое, ки, масалан, барномаҳоро танҳо бо забони англисӣ менавиштанд, қаноатмандии зиёд наовард, зеро пас аз гузаштан аз versionи васеъшудаи ASCII ба UTF-16 вазни ҳуҷҷатҳо дучанд шуд (як byte дар як аломати Аски ва ду byte барои як аломати ЮТФ-16). Маҳз барои қонеъ кардани ҳама ва ҳама чиз дар консорсиуми Юниcode қарор дода шуд, ки рамзгузории дарозии тағирёбанда таҳия карда шавад . Он UTF-8 ном дошт. Сарфи назар аз ҳашт дар ном, он дар асл дарозии тағйирёбанда дорад, яъне. Ҳар як аломати матнро метавон ба пайдарпаии дарозии аз як то шаш byte рамзгузорӣ кард. Дар амал, UTF-8 танҳо диапазони аз як то чор byteро истифода мебарад, зеро берун аз чаҳор byte code дигар ҳатто аз ҷиҳати назариявӣ тасаввур кардан имкон надорад. Ҳама аломатҳои лотинии он ба як byte рамзгузорӣ шудаанд, ба мисли ASCII-и кӯҳна. Ҷолиби диққат аст, ки дар сурати рамзгузории танҳо алифбои лотинӣ, ҳатто он барномаҳое, ки Юниcodeро намефаҳманд, ҳамон чизеро, ки дар YTF-8 рамзгузорӣ шудааст, мехонанд. Яъне, қисми асосии Асука танҳо ба ин ташаббуси консорсиуми Юниcode интиқол дода шуд. Аломатҳои сирorкӣ дар UTF-8 дар ду byte рамзгузорӣ шудаанд ва масалан, ҳарфҳои гурҷӣ дар се byte рамзгузорӣ шудаанд. Консорсиуми Юниcode, пас аз таъсиси UTF 16 ва 8, мушкилоти асосиро ҳал кард - ҳоло мо дар шрифтҳои худ фазои ягонаи code дорем . Ва ҳоло истеҳсолкунандагони онҳо метавонанд онро танҳо бо шаклҳои вектории аломатҳои матнӣ дар асоси қувват ва қобorятҳои худ пур кунанд. Дар "Ҷадвали аломатҳо" дар боло шумо мебинед, ки шрифтҳои гуногун шумораи аломатҳои гуногунро дастгирӣ мекунанд. Баъзе шрифтҳои дорои Юниcode метавонанд хеле вазнин бошанд. Аммо ҳоло онҳо на бо он фарқ мекунанд, ки онҳо барои рамзгузории гуногун сохта шудаанд, балки дар он аст, ки истеҳсолкунандаи шрифт фазои ягонаи codeро бо шаклҳои муайяни векторӣ пур кардааст ё пурра пур накардааст.

Калимаҳои девона ба ҷои ҳарфҳои русӣ - чӣ гуна ислоҳ кардан мумкин аст

Биёед ҳоло бубинем, ки чӣ тавр ба ҷои матн кракозябрҳо пайдо мешаванд ё ба ибораи дигар, рамзгузории дурусти матни русӣ чӣ гуна интихоб карда мешавад. Дар асл, он дар барномае муқаррар шудааст, ки дар он шумо ин матн ё рамзро бо истифода аз порчаҳои матн эҷод ё таҳрир мекунед. Барои таҳрир ва сохтани файлҳои матнӣ, ман шахсан аз муҳаррири хеле хуб, ба андешаи ман, Html ва PHP муҳаррири Notepad++ истифода мебарам . Аммо, он метавонад синтаксиси садҳо забонҳои барномасозӣ ва аломатгузории дигарро таъкид кунад ва инчунин қобorяти васеъ кардани плагинҳоро дорад. Шарҳи муфассали ин барномаи аҷибро дар истиноди пешниҳодшуда хонед. Дар менюи болоии Notepad++ банди "Рамзгузориҳо" мавҷуд аст, ки дар он шумо имкони табдил додани варианти мавҷударо ба опсияи дар сайти шумо бо нобаёнӣ истифодашаванда доред: Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 9Дар мавриди сайт дар Joomla 1.5 ва навтар, ба монанди инчунин дар сурати блог дар WordPress, шумо бояд аз намуди худ канорагирӣ кунед Кракозябров варианти UTF 8-ро бидуни BOM интихоб кунед . Префикси BOM чист? Гап дар он аст, ки вақте ки онҳо рамзгузории YUTF-16-ро таҳия мекарданд, бо баъзе сабабҳо онҳо тасмим гирифтанд, ки ба он чизеро замима кунанд, ба монанди қобorяти навиштани рамзи аломатҳо ҳам бо пайдарпаии мустақим (масалан, 0A15) ва ҳам баръакс (150A) . Ва барои он ки барномаҳо дарк кунанд, ки codeҳоро бо кадом пайдарпай хондан лозим аст, BOM (Byte Order Mark ё ба ибораи дигар, имзо) ихтироъ шудааст, ки бо илова кардани се byteи иловагӣ ба ибтидои ҳуҷҷатҳо ифода шудааст. Дар рамзгузории UTF-8, дар консорсиуми Юниcode ягон BOM пешбинӣ нашудааст ва аз ин рӯ, илова кардани имзо (он се byteи изофӣ дар аввали ҳуҷҷат) танҳо ба баъзе барномаҳо хондани codeро пешгирӣ мекунад. Аз ин рӯ, ҳангоми захира кардани файлҳо дар UTF, мо бояд ҳамеша вариантро бидуни BOM (бе имзо) интихоб кунем. Ҳамин тариқ, шумо худро пешакӣ аз хазандагон аз кракозябрҳо муҳофизат хоҳед кард . Ҷолиби диққат он аст, ки баъзе барномаҳо дар Windows ин корро карда наметавонанд (онҳо наметавонанд матнро дар UTF-8 бе BOM захира кунанд), масалан, ҳамон як Notepad-и маъруфи Windows. Он ҳуҷҷатро дар UTF-8 захира мекунад, аммо ба ҳар ҳол имзоро (се byteҳои иловагӣ) ба аввали он илова мекунад. Гузашта аз ин, ин byteҳо ҳамеша якхела хоҳанд буд - codeро бо пайдарпаии мустақим хонед. Аммо дар serverҳо, аз сабаби ин чизи ночиз, мушкилот метавонад ба миён ояд - қаллобон берун меоянд. Аз ин рӯ, дар ҳеҷ ҳолат ноутбуки муқаррарии Windows-ро истифода набаред .барои таҳрир кардани ҳуҷҷатҳо дар сайти худ, агар шумо намехоҳед, ки ягон тарқишҳо пайдо шаванд. Ман муҳаррири қаблан зикргардидаи Notepad++-ро беҳтарин ва соддатарин вариант мешуморам, ки амалан ҳеҷ камбудӣ надорад ва танҳо аз бартариҳо иборат аст. Дар Notepad++, вақте ки шумо рамзгузориро интихоб мекунед, шумо имкони табдил додани матнро ба рамзгузории UCS-2 доред, ки табиатан ба стандарти Юниcode хеле наздик аст. Инчунин дар Notepad имкон пайдо мешавад, ки матн дар ANSI рамзгузорӣ карда шавад, яъне. дар робита ба забони русӣ, ин Windows 1251 хоҳад буд, ки мо онро аллакай дар боло тавсиф кардем.Ин маълумот аз куҷост? Он дар феҳристи системаи оператсионии Windows-и шумо сабт шудааст - кадом рамзгузориро дар мавриди ANSI интихоб кардан лозим аст ва кадомашро дар мавриди OEM интихоб кардан лозим аст (барои забони русӣ он CP866 хоҳад буд). Агар шумо забони дигари пешфарзро дар компютери худ насб кунед, пас ин рамзгузорӣ бо рамзҳои шабеҳи категорияи ANSI ё OEM барои ҳамон забон иваз карда мешаванд. Пас аз он ки ҳуҷҷатро дар Notepad++ дар рамзгузории лозима захира кунед ё ҳуҷҷатро аз сайт барои таҳрир кушоед, шумо метавонед номи онро дар кунҷи рости поёни муҳаррир бубинед: Рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст - 10Барои роҳ надодан ба иштибоҳ , ба ғайр аз қадамҳои дар боло тавсифшуда. , навиштани рамзи сарчашма дар сарлавҳаи он муфид хоҳад буд, ки ҳама саҳифаҳои иттилооти сайт дар бораи ин рамзгузорӣ карда шаванд, то дар server ё мизбони маҳаллӣ нофаҳмиҳо вуҷуд надошта бошанд. Умуман, ҳама забонҳои аломатгузории гиперматнӣ ба истиснои Html эъломияи махсуси xml-ро истифода мебаранд, ки рамзгузории матнро муайян мекунад.
<?xml version="1.0" encoding="windows-1251"?>
Пеш аз таҳлor code, браузер медонад, ки кадом version истифода мешавад ва чӣ гуна бояд рамзҳои аломатҳои ин забонро тафсир кунад. Аммо ҷолиби диққат он аст, ки агар шумо ҳуҷҷатро дар Юниcodeи пешфарз нигоҳ доред, ин эъломияи xml мумкин аст сарфи назар карда шавад (дар сурати мавҷуд набудани BOM ё UTF-16, агар BOM мавҷуд бошад, рамзгузорӣ UTF-8 ҳисобида мешавад). Дар сурати ҳуҷҷати HTML, унсури Meta барои нишон додани рамзгузорӣ истифода мешавад , ки дар байни тегҳои кушода ва пӯшидани Head ҷойгир карда мешавад:
<head>
...
<meta charset="utf-8">
...
</head>
Ин сабт аз стандарти Html 4.01 ба куллӣ фарқ мекунад, аммо ба стандарти Html 5 комилан мувофиқ аст ва онро ҳама браузерҳое, ки ҳоло истифода мешаванд, дуруст мефаҳманд. Дар назария, унсури Meta, ки рамзгузории ҳуҷҷати Html-ро нишон медиҳад, дар сарлавҳаи ҳуҷҷат ба қадри имкон баландтар ҷойгир карда мешавад , то вақте ки матн бо аломати аввал дучор шавад, на аз ANSI асосӣ (ки ҳамеша дуруст ва дар матн хонда мешавад) ҳар гуна вариант), браузер бояд аллакай маълумотро дар бораи чӣ гуна тафсир кардани рамзҳои ин аломатҳо дошта бошад. Истинод ба манбаи аслӣ: рамзгузории матнии ASCII (Windows 1251, CP866, KOI8-R) ва Юниcode (UTF 8, 16, 32) - чӣ гуна мушкилотро бо крекерҳо ҳал кардан мумкин аст
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION