JavaRush /Java блогы /Random-KK /ASCII (Windows 1251, CP866, KOI8-R) және Юникод (UTF 8, 1...
articles
Деңгей

ASCII (Windows 1251, CP866, KOI8-R) және Юникод (UTF 8, 16, 32) мәтіндік кодтау - крекерлермен мәселені қалай шешуге болады

Топта жарияланған
Бүгін біз веб-сайтта және бағдарламаларда krakozyabrs қайдан шыққаны, қандай мәтіндік codeтаулар бар және қайсысын пайдалану керектігі туралы сөйлесетін боламыз. Негізгі ASCII, сондай-ақ оның CP866, KOI8-R, Windows 1251 кеңейтілген нұсқаларынан бастап және қазіргі Юниcode консорциумының UTF 16 және 8 codeтауларымен аяқталатын олардың даму тарихын толығырақ қарастырайық. Мазмұны ASCII (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) мәтіндік codeтау - крекермен мәселені қалай шешуге болады - 1: Кейбіреулер үшін бұл ақпарат қажетсіз болып көрінуі мүмкін, бірақ сіз менің кракозиябрларға (оқылмаған таңбалар жиынтығы) қатысты қанша сұрақ алатынымды білесіз бе? Енді мен барлығына осы мақаланың мәтініне сілтеме жасап, өз қателерімді табуға мүмкіндігім болады. Ал, ақпаратты қабылдауға дайын болыңыз және оқиғаның ағымын ұстануға тырысыңыз.

ASCII – латын әліпбиі үшін негізгі мәтінді codeтау

Мәтіндік codeтаулардың дамуы IT-индустриясының қалыптасуымен бір мезгілде болды және осы уақыт ішінде олар көптеген өзгерістерге ұшырады. Тарихи тұрғыдан бәрі EBCDIC-тен басталды, ол орысша айтылуында біршама диссонантты болды, бұл латын әліпбиінің әріптерін, араб цифрларын және тыныс белгілерін басқару таңбаларымен codeтауға мүмкіндік берді. Дегенмен, қазіргі заманғы мәтіндік codeтауларды дамытудың бастапқы нүктесі ретінде әйгілі ASCII (американдық ақпарат алмасудың стандартты codeы, орыс тілінде әдетте «сұрау» деп айтылады) қарастырылуы керек. Ол ағылшын тілінде сөйлейтін пайдаланушылар жиі қолданатын алғашқы 128 таңбаны – латын әріптерін, араб цифрларын және тыныс белгілерін сипаттайды. ASCII-де сипатталған бұл 128 таңба сонымен қатар жақшалар, хэш белгілері, жұлдызшалар және т.б. сияқты кейбір қызметтік таңбаларды қамтиды. Шындығында, сіз оларды өзіңіз көре аласыз: ASCII (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) мәтіндік codeтау - крекерлермен мәселені қалай шешуге болады - 2дәл осы ASCII нұсқасының 128 таңбасы стандартқа айналды және кез келген басқа codeтауда сіз оларды міндетті түрде табасыз және олар осы тәртіпте пайда болады. Бірақ бір byte ақпараттың көмегімен сіз 128 емес, 256 түрлі мәндерді codeтай аласыз (сегіздің дәрежесі 256-ға тең), сондықтан Асуканың негізгі нұсқасынан кейін тұтас кеңейтілген ASCII codeтауларының сериясы пайда болды , оларда 128 негізгі таңбадан басқа ұлттық codeтау таңбалары арқылы codeтауға болады (мысалы, орыс тілі). Бұл жерде сипаттамада қолданылатын санау жүйелері туралы аздап айтып кеткен жөн болар. Біріншіден, бәріңіз білетіндей, компьютер тек екілік жүйедегі сандармен, атап айтқанда нөлдермен және бірліктермен жұмыс істейді («Буль алгебра», егер оны институтта немесе мектепте алған болса). Бір byte сегіз биттен тұрады, олардың әрқайсысы нөлден бастап екінің дәрежесіне екі және жетіншіге дейінгі екіге дейін білдіреді: ASCII (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) мәтіндік codeтау - крекерлермен мәселені қалай шешуге болады - 3 Мұндай конструкциядағы нөлдер мен бірліктердің барлық мүмкін комбинациялары мүмкін екенін түсіну қиын емес. тек 256. Санды екілік жүйеден ондық санау жүйесіне түрлендіру өте қарапайым. Сізге тек екінің барлық қуаттарын олардың үстіндегі бірлерімен қосу керек. Біздің мысалда бұл 1 (нөлдің дәрежесіне 2) плюс 8 (3 дәрежесіне екі), плюс 32 (бесінші дәрежеге екі), плюс 64 (алтыншы дәрежеге), плюс 128 болады. (жетінші билікке). Барлығы ондық жүйеде 233. Көріп отырғаныңыздай, бәрі өте қарапайым. Бірақ ASCII таңбалары бар кестеге мұқият қарасаңыз, олардың он алтылық codeтауда ұсынылғанын көресіз. Мысалы, «жұлдызша» Аскидегі он алтылық 2А санына сәйкес келеді. Он алтылық санау жүйесінде араб цифрларынан басқа А-дан (он дегенді білдіреді) F-ға дейін (он бес дегенді білдіреді) латын әріптері де қолданылатынын білетін шығарсыз. Екілік санды он алтылық санға түрлендіру үшінкелесі қарапайым әдіске жүгініңіз. Ақпараттың әрбір byteы төрт биттен тұратын екі бөлікке бөлінеді. Анау. Әрбір жарты byteта тек он алты мәнді (екіден төртінші дәрежеге дейін) екілік жүйеде codeтауға болады, оны он алтылық сан ретінде оңай көрсетуге болады. Сонымен қатар, byteтың сол жақ жартысында градустарды скриншотта көрсетілгендей емес, нөлден бастап қайта санау қажет болады. Нәтижесінде біз скриншотта E9 саны codeталғанын аламыз. Менің пайымдауымның барысы мен бұл жұмбақтың шешімі сізге түсінікті болды деп үміттенемін. Ал, енді мәтіндік codeтау туралы әңгімені жалғастырайық.

Asuka - CP866 және псевдографиясы бар KOI8-R codeтауларының кеңейтілген нұсқалары

Сонымен, біз ASCII туралы айта бастадық, ол барлық заманауи codeтауларды (Windows 1251, Юниcode, UTF 8) әзірлеудің бастапқы нүктесі болды. Бастапқыда ол латын әліпбиінің 128 таңбасын, араб цифрларын және тағы басқаларды қамтыды, бірақ кеңейтілген нұсқада ақпараттың бір byteында codeталатын барлық 256 мәнді пайдалану мүмкін болды. Анау. Аскиге өз тіліңіздің әріптерінің таңбаларын қосу мүмкін болды. Бұл жерде мәтіндік codeтаулар не үшін қажет екенін және оның неге соншалықты маңызды екенін түсіндіру үшін тағы бір рет шегініс жасауымыз керек . Сіздің компьютеріңіздің экранындағы таңбалар екі нәрсенің негізінде қалыптасады - әртүрлі таңбалардың векторлық фигуралар жиыны (олар сіздің компьютеріңізде орнатылған қаріптері бар файлдарда) және дәл осыны шығаруға мүмкіндік беретін code. осы векторлық фигуралар жинағынан (қаріп файлы) дұрыс жерге кірістіру қажет символ. Векторлық пішіндерге қаріптердің өзі жауап беретіні анық, бірақ codeтауға операциялық жүйе мен онда қолданылатын бағдарламалар жауап береді. Анау. компьютеріңіздегі кез келген мәтін byteтардың жиынтығы болады, олардың әрқайсысы осы мәтіннің бір таңбасын codeтайды. Бұл мәтінді экранға шығаратын бағдарлама (мәтіндік редактор, браузер және т.б.) codeты талдау кезінде келесі символдың codeтауын оқиды және осыны көрсету үшін қосылған қажетті қаріп файлынан сәйкес векторлық пішінді іздейді. мәтіндік құжат. Барлығы қарапайым және қарапайым. Бұл бізге қажет кез келген таңбаны (мысалы, ұлттық әліпбиден) codeтау үшін екі шарттың орындалуы керек дегенді білдіреді: бұл таңбаның векторлық пішіні пайдаланылған қаріпте болуы керек және бұл таңба кеңейтілген ASCII codeтауларында codeталуы мүмкін. бір byteта. Сондықтан мұндай нұсқалардың тұтас тобы бар. Тек орыс тіліндегі таңбаларды codeтау үшін кеңейтілген Асканың бірнеше түрі бар. Мысалы, CP866 бастапқыда пайда болды , ол орыс алфавитіндегі таңбаларды пайдалану мүмкіндігіне ие болды және бұл ASCII кеңейтілген нұсқасы болды. Яғни, оның жоғарғы бөлігі дәл жоғарыдағы скриншотта көрсетілген Aska негізгі нұсқасымен (128 латын әріптері, сандар және басқа да сұмдық) сәйкес келді, бірақ CP866 codeтауы бар кестенің төменгі бөлігінде суретте көрсетілгендей болды. Төмендегі скриншот және тағы 128 таңбаны codeтауға рұқсат етілген (орыс әріптері және псевдографиканың барлық түрлері): ASCII (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) мәтіндік codeтау - крекерлермен мәселені қалай шешуге болады - 4 Оң жақ бағанда сандар 8-ден басталады, өйткені 0-ден 7-ге дейінгі сандар ASCII негізгі бөлігіне қатысты (бірінші скриншотты қараңыз). Осылайша, CP866-дағы кириллицадағы «M» әрпінде 9С codeы болады (ол он алтылық санау жүйесінде 9-мен сәйкес жолдың және С саны бар бағанның қиылысында орналасқан), оны бір byte ақпаратта жазуға болады. , ал орыс таңбалары бар қолайлы шрифт болса, бұл әріп мәтінде еш қиындықсыз пайда болады. Бұл сома қайдан келді?CP866 псевдографиясы ? Мәселе мынада: орыс мәтініне арналған бұл codeтау графикалық операциялық жүйелер қазіргідей кең таралмаған сол қиын жылдары жасалған. Dosa және ұқсас мәтіндік операциялық жүйелерде псевдография, кем дегенде, қандай да бір түрде мәтіндердің дизайнын әртараптандыруға мүмкіндік берді, сондықтан CP866 және оның Asuka кеңейтілген нұсқаларының санатындағы барлық басқа құрдастары бар. CP866-ны IBM таратқан, бірақ оған қоса, орыс тіліндегі таңбалар үшін бірқатар codeтаулар әзірленді, мысалы, KOI8-R бір түрге жатқызылуы мүмкін (кеңейтілген ASCII) : ASCII (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) мәтіндік codeтау - крекермен мәселені қалай шешуге болады - 5Оның жұмыс принципі бұрынғыдай қалады. сәл ертерек сипатталған CP866 нұсқасы - Мәтіннің әрбір таңбасы бір byte ретінде codeталған. Скриншот KOI8-R кестесінің екінші жартысын көрсетеді, себебі бірінші жартысы осы мақаладағы бірінші скриншотта көрсетілген негізгі Асукаға толығымен сәйкес келеді. KOI8-R codeтау ерекшеліктерінің ішінде оның кестесіндегі кириллица әріптері CP866-да жасалғандай алфавиттік тәртіпте емес екенін атап өтуге болады. Егер сіз бірінші скриншотты (барлық кеңейтілген codeтауларға кіретін негізгі бөліктің) қарасаңыз, KOI8-R орыс әріптері латын әліпбиінің сәйкес әріптері сияқты кестенің бір ұяшықтарында орналасқанын байқайсыз. кестенің бірінші бөлігінен. Бұл бір битті (екіден жетінші дәрежеге немесе 128) алып тастау арқылы орыс тілінен латын таңбаларына ауысудың ыңғайлылығы үшін жасалды.

Windows 1251 - ASCII заманауи нұсқасы және неге жарықтар пайда болады

Мәтіндік codeтаудың одан әрі дамуы графикалық операциялық жүйелердің танымал болуымен және оларда псевдографияны қолдану қажеттілігінің уақыт өте келе жойылуымен байланысты болды. Нәтижесінде, Асуканың әлі де кеңейтілген нұсқалары (мәтіннің бір символы бір byte ақпаратпен codeталған), бірақ псевдографиялық белгілерді қолданбай, тұтас топ пайда болды. Олар американдық стандарттар институты әзірлеген ANSI деп аталатын codeтауларға тиесілі болды. Кәдімгі тілмен айтқанда, кириллица атауы орыс тілін қолдайтын нұсқа үшін де қолданылған. Бұған мысал Windows 1251 болады . Оның бұрын қолданылған CP866 және KOI8-R-ден жақсы айырмашылығы болды, ондағы псевдографиялық белгілердің орнын орыс типографиясының жетіспейтін таңбалары (екпін белгісінен басқа), сондай-ақ славян тілдерінде қолданылатын таңбалар алды. Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 6Орыс тілі (украин, беларусь және т . мәтінде қолданылған нұсқамен шатасу болған кезде. Көбінесе олар электрондық пошта арқылы хабарламаларды жіберу және алу кезінде пайда болды, бұл өте күрделі түрлендіру кестелерін құруға әкелді, бұл шын мәнінде бұл мәселені түбегейлі шеше алмады, ал пайдаланушылар жиі хат алмасу үшін латын әріптерінің транслитерациясын пайдаланды. CP866, KOI8-R немесе Windows 1251 сияқты орысша codeтауларды пайдаланған кезде аты шулы сөзден аулақ болыңыз. Шын мәнінде, орыс тіліндегі мәтіннің орнына пайда болған жарықтар берілген тілдегі codeтауды дұрыс пайдаланбаудың нәтижесі болып табылады. мәтіндік хабар бастапқыда codeталған. Айталық, егер сіз Windows 1251 code кестесін пайдаланып CP866 көмегімен codeталған таңбаларды көрсетуге әрекеттенсеңіз, хабарлама мәтінін толығымен ауыстырып, дәл сол бос сөздер (мағынасыз таңбалар жинағы) шығады. Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 7Ұқсас жағдай көбінесе веб-сайттарды, форумдарды немесе блогтарды құру және орнату кезінде, орыс таңбалары бар мәтін сайтта әдепкі бойынша қолданылатын қате codeтауда немесе көрінбейтін гадж қосатын қате мәтіндік редакторда қате сақталған кезде туындайды. codeқа жалаң көзбен. Ақыр соңында, көптеген адамдар бұл жағдайдан көптеген codeтаулармен және үнемі ақымақтықпен шаршады және барлық барларды ауыстыратын және оқылмайтын мәтіндердің пайда болуымен мәселені шешетін жаңа әмбебап вариацияны жасау үшін алғышарттар пайда болды. . Сонымен қатар, қытай тілі сияқты тілдердің проблемасы болды, онда 256-дан әлдеқайда көп тілдік таңбалар болды.

Юниcode – UTF 8, 16 және 32 әмбебап codeтаулары

Оңтүстік-Шығыс Азия тілдер тобының мыңдаған таңбаларын ASCII кеңейтілген нұсқаларында таңбаларды codeтау үшін бөлінген бір byte ақпаратта сипаттау мүмкін емес. Нәтижесінде әмбебап мәтіндік codeтаудың пайда болуына қызығушылық танытқан көптеген IT саласының жетекшілерінің (бағдарламалық құралдарды шығаратындар, аппараттық құралдарды codeтайтындар, қаріптерді жасайтындар) ынтымақтастығымен Юниcode (Юниcode Консорциумы) деп аталатын консорциум құрылды . Юниcode консорциумының қамқорлығымен шығарылған бірінші нұсқа UTF 32 болды . Кодтау атауындағы сан бір таңбаны codeтау үшін пайдаланылатын биттердің санын білдіреді. 32 бит жаңа әмбебап UTF codeтауында бір таңбаны codeтау үшін қажет болатын 4 byte ақпаратқа тең. Нәтижесінде, ASCII кеңейтілген нұсқасында және UTF-32-де codeталған мәтіні бар бірдей файл, соңғы жағдайда төрт есе үлкен өлшемге (салмағы) ие болады. Бұл жаман, бірақ қазір бізде UTF арқылы екіден отыз секундқа дейінгі таңбалар санын codeтау мүмкіндігі бар ( үлкен маржамен кез келген шынымен қажетті мәнді қамтитын миллиардтаған таңбалар ). Бірақ еуропалық топтың тілдері бар көптеген елдер codeтауда мұндай үлкен таңбаларды мүлде пайдаланудың қажеті жоқ еді, дегенмен UTF-32-ні пайдаланған кезде олар еш себепсіз мәтіндік құжаттардың салмағын төрт есе арттырды, және нәтижесінде интернет-трафик көлемінің және сақталған деректер көлемінің ұлғаюы. Бұл өте көп және мұндай қалдықтарды ешкім көтере алмады. Юниcodeты дамыту нәтижесінде UTF-16 пайда болды , ол сәтті болғаны сонша, ол әдепкі бойынша біз қолданатын барлық таңбалар үшін негізгі кеңістік ретінде қабылданды. Ол бір таңбаны codeтау үшін екі byteты пайдаланады. Бұл заттың қалай көрінетінін көрейік. Windows операциялық жүйесінде сіз «Бастау» - «Бағдарламалар» - «Керек-жарақтар» - «Жүйелік құралдар» - «Таңбалар кестесі» жолымен жүре аласыз. Нәтижесінде жүйеде орнатылған барлық қаріптердің векторлық пішіндері бар кесте ашылады. «Қосымша опциялар» ішінде Юниcode таңбалар жинағын таңдасаңыз, әрбір қаріп үшін оған енгізілген таңбалардың бүкіл ауқымын бөлек көре аласыз. Айтпақшы, олардың кез келгенін басу арқылы сіз оның төрт он алтылық саннан тұратын UTF-16 пішіміндегі екі byteтық codeын көре аласыз:Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 8UTF-16-да 16 битпен қанша таңбаны codeтауға болады? 65,536 (екіден он алтыға дейін) және бұл Юниcodeта негізгі кеңістік ретінде қабылданған сан. Бұған қоса, оны пайдаланып екі миллионға жуық таңбаны codeтау жолдары бар, бірақ олар мәтіннің миллион таңбасының кеңейтілген кеңістігімен шектелді. Бірақ Юниcode codeтаудың бұл сәтті нұсқасының өзі, айталық, бағдарламаларды тек ағылшын тілінде жазғандарға көп қанағаттанбады, өйткені ASCII кеңейтілген нұсқасынан UTF-16-ға көшкеннен кейін құжаттардың салмағы екі есе өсті (бір byte үшін бір byte) Aski-дегі таңба және YUTF-16-дағы бір таңба үшін екі byte). Юниcode консорциумында барлығын және барлығын қанағаттандыру үшін айнымалы ұзындықты codeтауды ойлап табу туралы шешім қабылданды . Ол UTF-8 деп аталды. Атауындағы сегізге қарамастан, ол шын мәнінде айнымалы ұзындыққа ие, яғни. Мәтіннің әрбір таңбасын ұзындығы бір-алты byte тізбекке codeтауға болады. Іс жүзінде, UTF-8 тек бір-төрт byte аралығындағы диапазонды пайдаланады, өйткені төрт byte codeтан кейін ештеңені елестету теориялық тұрғыдан мүмкін емес. Ондағы барлық латын таңбалары ескі жақсы ASCII сияқты бір byteқа codeталған. Бір қызығы, тек латын әліпбиін codeтаған жағдайда, тіпті Юниcodeты түсінбейтін бағдарламалар YTF-8-де codeталған нәрсені оқиды. Яғни, Асуканың негізгі бөлігі жай ғана Юниcode консорциумының осы идеясына берілді. UTF-8-дегі кириллица таңбалары екі byteпен codeталған, ал, мысалы, грузин таңбалары үш byteпен codeталған. Юниcode консорциумы UTF 16 және 8 жасағаннан кейін негізгі мәселені шешті - енді қаріптерімізде бір codeтық кеңістік бар . Ал енді олардың өндірушілері оны тек күшті жақтары мен мүмкіндіктеріне қарай мәтіндік таңбалардың векторлық формаларымен толтыра алады. Жоғарыдағы «Таңбалар кестесінде» әртүрлі қаріптер әртүрлі таңбалар санын қолдайтынын көре аласыз. Кейбір Юниcodeқа бай қаріптер өте ауыр болуы мүмкін. Бірақ қазір олар әртүрлі codeтау үшін жасалғандығымен емес, қаріп өндірушісінің бір code кеңістігін белгілі векторлық пішіндермен толтырғанымен немесе толық толтырмағанымен ерекшеленеді.

Орыс әріптерінің орнына ақылсыз сөздер - оны қалай түзетуге болады

Енді мәтіннің орнына кракозябрлар қалай пайда болатынын немесе басқаша айтқанда, орыс мәтіні үшін дұрыс codeтау қалай таңдалғанын көрейік. Шын мәнінде, ол дәл осы мәтінді жасайтын немесе өңдейтін бағдарламада немесе мәтін фрагменттерін пайдаланып codeта орнатылған. Мәтіндік файлдарды өңдеу және жасау үшін мен өте жақсы, менің ойымша, Html және PHP редакторы Notepad++ қолданамын . Дегенмен, ол жүздеген басқа бағдарламалау және белгілеу тілдерінің синтаксисін ерекшелей алады, сонымен қатар плагиндер арқылы кеңейту мүмкіндігіне ие. Берілген сілтеме бойынша осы тамаша бағдарламаның егжей-тегжейлі шолуын оқыңыз. Блокнот++ жоғарғы мәзірінде «Кодтаулар» тармағы бар, онда сіз бар опцияны әдепкі бойынша сайтыңызда қолданылатын опцияға түрлендіру мүмкіндігіне ие боласыз: Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 9Joomla 1.5 және одан жоғары нұсқадағы сайт жағдайында, мысалы сондай-ақ WordPress-тегі блог жағдайында сіз Кракозябровтың пайда болуынан аулақ болуыңыз керек, BOM жоқ UTF 8 опциясын таңдаңыз . BOM префиксі дегеніміз не? Өйткені, олар YUTF-16 codeтауын әзірлеген кезде, олар қандай да бір себептермен оған таңба codeын тікелей ретпен (мысалы, 0A15) және кері (150А) жазу мүмкіндігі сияқты нәрсені қосуды шешті. . Бағдарламалар codeтарды қандай ретпен оқу керектігін түсінуі үшін құжаттардың ең басына қосымша үш byte қосу арқылы білдірілген BOM (Байт реті белгісі немесе басқаша айтқанда, қолтаңба) ойлап табылды. UTF-8 codeтауында Юниcode консорциумында ешқандай BOM қарастырылмаған, сондықтан қолтаңбаны қосу (құжаттың басындағы атышулы қосымша үш byte) кейбір бағдарламалардың codeты оқуын болдырмайды. Сондықтан файлдарды UTF форматында сақтау кезінде біз әрқашан BOMсыз (қолтаңбасыз) опцияны таңдауымыз керек. Осылайша, сіз өзіңізді кракозябрлердің шығуынан алдын ала қорғайсыз . Бір қызығы, Windows жүйесіндегі кейбір бағдарламалар мұны істей алмайды (мәтінді BOMсыз UTF-8-де сақтай алмайды), мысалы, аты әйгілі Windows блокнот. Ол құжатты UTF-8 форматында сақтайды, бірақ оның басына қолтаңбаны қосады (қосымша үш byte). Сонымен қатар, бұл byteтар әрқашан бірдей болады - codeты тікелей ретпен оқыңыз. Бірақ serverлерде осы кішкентай нәрсеге байланысты мәселе туындауы мүмкін - алаяқтар шығады. Сондықтан ешбір жағдайда кәдімгі Windows блокнот бағдарламасын пайдаланбаңыз .кез келген жарықтар пайда болғанын қаламасаңыз, сайтыңыздағы құжаттарды өңдеу үшін. Мен жоғарыда айтылған Notepad++ редакторын іс жүзінде ешқандай кемшіліктері жоқ және тек артықшылықтардан тұратын ең жақсы және қарапайым нұсқа деп санаймын. Блокнот++ бағдарламасында codeтауды таңдаған кезде мәтінді UCS-2 codeтауына түрлендіру мүмкіндігі болады, ол табиғаты бойынша Юниcode стандартына өте жақын. Сондай-ақ Блокнотта мәтінді ANSI тілінде codeтау мүмкін болады, яғни. Орыс тіліне қатысты, бұл Windows 1251 болады, біз оны жоғарыда сипаттадық.Бұл ақпарат қайдан алынған? Ол сіздің Windows операциялық жүйеңіздің тізілімінде тіркелген - ANSI жағдайында қандай codeтауды таңдау керек, OEM жағдайында қайсысын таңдау керек (орыс тілі үшін ол CP866 болады). Компьютерде басқа әдепкі тілді орнатсаңыз, бұл codeтаулар сол тілге арналған ANSI немесе OEM санатындағы ұқсастармен ауыстырылады. Құжатты Notepad++ бағдарламасында қажет codeтауда сақтағаннан кейін немесе құжатты өңдеу үшін сайттан ашқаннан кейін оның атын редактордың төменгі оң жақ бұрышында көре аласыз: Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юниcode (UTF 8, 16, 32) — How исправить проблему с кракозябрами - 10Шатастыруды болдырмау үшін , жоғарыда сипатталған қадамдарға қосымша , serverде немесе жергілікті хостта шатасу болмас үшін, оның тақырыбына бастапқы codeты осы codeтау туралы сайттың барлық беттеріне жазу пайдалы болады. Жалпы, Html-тен басқа барлық гипермәтінді белгілеу тілдері мәтіндік codeтауды көрсететін арнайы xml декларациясын пайдаланады.
<?xml version="1.0" encoding="windows-1251"?>
Кодты талдаудан бұрын браузер қай нұсқаның қолданылып жатқанын және сол тілдің таңба codeтарын қалай түсіндіру керектігін біледі. Бірақ бір қызығы, егер сіз құжатты әдепкі Юниcodeта сақтасаңыз, бұл xml декларациясын өткізіп жіберуге болады (БОМ жоқ болса, codeтау UTF-8 немесе БОМ бар болса UTF-16 деп есептеледі). HTML құжаты жағдайында Мета элементі codeтауды көрсету үшін пайдаланылады , ол ашу және жабу Head тегтерінің арасында орналасады:
<head>
...
<meta charset="utf-8">
...
</head>
Бұл жазба Html 4.01 стандартынан айтарлықтай ерекшеленеді, бірақ Html 5 стандартына толығымен сәйкес келеді және оны қазіргі уақытта қолданылып жүрген кез келген браузер дұрыс түсінеді. Теориялық тұрғыдан, Html құжатының codeталуын көрсететін Meta элементі құжат тақырыбына мүмкіндігінше жоғары орналастырылған дұрыс , осылайша мәтін негізгі ANSI емес бірінші таңбамен кездескен кезде (ол әрқашан дұрыс оқылады және кез келген вариация), браузерде осы таңбалардың codeтарын қалай түсіндіретіні туралы ақпарат болуы керек. Түпнұсқа дереккөзге сілтеме: ASCII мәтіндік codeтау (Windows 1251, CP866, KOI8-R) және Юниcode (UTF 8, 16, 32) - крекерлермен мәселені қалай шешуге болады
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION