КомпјутериПрограмирање

UTF-8 - кодирање на знаци

Уникод ги поддржува скоро сите постоечки набори на знаци. Најдобар енкодинг за Уникод карактер сет UTF-8 кодирање. Обезбедува компатибилност со ASCII, отпорност на податоци корупција, ефикасност и леснотија на обработка. Но, за се што е во ред.

Форми на кодирање

Компјутерите работат со броеви не само како апстрактни математички објекти, туку како комбинации на единици за складирање и обработка на информативни-бајти со фиксна големина и 32-битни зборови. Стандардот за кодирање мора да го земе предвид ова при одредување на начинот на кој карактери се претставени со броеви.

Во компјутерски системи, целите се чуваат во мемориски ќелии од 8 бита (1 бајт), 16 или 32 бита. Секоја форма на енкодирање на Unicode одредува која секвенца на мемориски ќелии претставува цел број кој одговара на одреден карактер. Стандардот обезбедува три различни форми на енкодирање на Unicode карактери: 8, 16 и 32-битни блокови. Според тоа, тие се нарекуваат UTF-8, UTF-16 и UTF-32. Името UTF претставува формат за конверзија на Unicode. Секоја од трите форми на кодирање е еднакво средство за претставување на знаци на Unicode, има предности во различни апликации.

Овие кодови може да се користат за да ги претставуваат сите ликови од стандардот Unicode. Така, тие се целосно компатибилни за решенија од различни причини користејќи различни форми на кодирање. Секое кодирање може уникатно да се конвертира во било кој од другите две без губење на податоци.

Принцип на ненаметливост

Секоја од формите за шифрирање на Уникод е дизајнирана земајќи ја предвид неприфатливоста на делумното преклопување. На пример, Windows-932 генерира знаци од еден или два бајти од код. Должината на секвенцата зависи од првиот бајт, така што водечките бајтови во низата од два бајта и еден бајт не се пресекуваат. Сепак, вредностите на единечниот бајт и затворањето на бајтот од секвенцата може да бидат исти. Ова значи, на пример, дека кога го барате знакот D (код 44), може по грешка да го пронајдете влегувањето во вториот дел од секвенцата од два бајта на знакот "D" (шифра 84 44). За да се утврди која низа е точна, програмата мора да ги земе предвид претходните бајти.

Ситуацијата станува посложена ако главниот и затворачкиот бајт се совпаѓаат. Ова значи дека за да се смени двосмисленоста, ќе се изврши обратно пребарување до почетокот на текстот или недвосмислена секвенца на код. Ова не е само неефикасно, но не е заштитено од можни грешки, бидејќи еден лош бајт е доволен да го направи целиот текст нечитлив.

Форматот за конверзија на Уникод го избегнува овој проблем, бидејќи вредностите на водечките, заостануваните и единечните единици за складирање информации не се совпаѓаат. Поради ова, сите енкоди за Уникод се погодни за пребарување и споредување, никогаш не давајќи погрешен резултат поради совпаѓање на различни делови од кодот на знакот. Фактот дека овие форми за кодирање се во согласност со принципот на ненаменување ги разликува од другите мулти-бајтни источно-азиски енкоди.

Друг аспект на не-пресек на енкодирањето на Уникод е тоа што секој карактер има јасно дефинирани граници. Ова ја елиминира потребата за скенирање на неодреден број на претходни знаци. Оваа карактеристика на енкодирањето понекогаш се нарекува само-синхронизација. Искрицијата на една единица код ќе доведе до нарушување на само еден карактер, а околните симболи остануваат непроменети. Во 8-битниот формат за конверзија, ако покажувачот се однесува на бајт кој започнува со 10xxxxxx (во бинарно кодирање), се потребни еден до три обратни транзиции за да го побараат почетокот на карактерот.

Доследност

Конзорциумот Unicode целосно ги поддржува сите 3 кодни форми. Важно е да не се спротивставувате на UTF-8 и Unicode, бидејќи сите формати за конверзија се подеднакво легитимни имплементации на формулари за енкодирање на карактери на Unicode.

Бајт-ориентација

За да го претставувате симболот UTF-32, потребна ви е една 32-битна единица код кој се совпаѓа со кодот Unicode. UTF-16 - од една до две 16-битни единици. И UTF-8 користи до 4 бајти.

Кодирањето на UTF-8 е наменето за компатибилност со бајт-ориентирани системи базирани на ASCII. Поголемиот дел од постојните софтверски и информатички практики долго време се потпираа на претставувањето на симболите во форма на низа од бајти. Многу протоколи зависат од непроменливоста на кодирањето ASCII и или ги користи или избегнува специјалните контролни знаци. Лесен начин за адаптирање на Уникод во такви ситуации е со користење на 8-битно кодирање за да ги претставува Уникод карактери еквивалентни на било кој ASCII карактер или контролен карактер. За ова, наменето е UTF-8 кодирање.

Променлива должина

UTF-8 е кодирање со променлива должина, составено од 8-битни единици за складирање на информации чиишто битови со висок редослед укажуваат на кој дел од редоследот припаѓа секој поединечен бајт. Еден спектар на вредности е резервиран за првиот елемент од секвенцата на кодови, а другиот за следните елементи. Ова обезбедува несовпаѓање на кодирањето.

ASCII

Кодирањето UTF-8 целосно ги поддржува ASCII кодовите (0x00-0x7F). Ова значи дека Уникод карактери U + 0000-U + 007F се конвертираат во еден бајт 0x00-0x7F UTF-8 и на тој начин стануваат неразлични од ASCII. Покрај тоа, за да се избегне двосмисленост, вредностите 0x00-0x7F повеќе не се користат во било кој бајт на претставата за Unicode карактер. За кодирање на не-идеографски симболи, различни од ASCII, се користи секвенца од два бајти. Симболите на опсегот U + 0800-U + FFFF се претставени со три бајти, а дополнителните со шифри поголеми од U + FFFF бараат четири бајти.

Опсег на примена

Кодирањето на UTF-8 обично се користи во протоколот HTML и слично на него.

XML стана првиот стандард со целосна поддршка за кодирање UTF-8. Организациите вклучени во стандардизацијата, исто така, го препорачуваат. Проблемот за поддршка за URL адреси различни од ASCII карактери беше решен кога W3C конзорциумот и IETF инженерската група се согласија да ги кодираат сите адреси исклучиво во UTF-8.

Компатибилност со ASCII го олеснува преминот кон нов софтвер. Со UTF-8, повеќето текстуални уредници работат, вклучувајќи ги и JEdit, Emacs, BBEdit, Eclipse и Notepad од оперативниот систем Windows. Ниту една друга форма на Уникод кодирање може да се пофали со таква поддршка од алатките.

Предноста на кодирањето е тоа што се состои од низа од бајти. Со UTF-8 жици, лесно е да се работи во C и други програмски јазици. Ова е единствената форма на кодирање која не бара обележување на редоследот на BOM бајтите или декларацијата за кодирање во XML.

Авто-синхронизација

Во средина која користи 8-битна обработка на знаци, во споредба со други мулти-бајт кодирања, UTF-8 ги има следните предности:

  • Првиот бајт од секвенцата на кодови содржи информации за неговата должина. Ова ја зголемува ефикасноста на директното пребарување.
  • Поедноставен е да се најде почетокот на карактерот, бидејќи иницијалниот бајт е ограничен на фиксен опсег на вредности.
  • Не постои пресек на бајт вредности.

Споредба на предностите

Кодирањето UTF-8 е компактно. Но, кога аплицирате за кодирање на источно-азиски ликови (кинески, јапонски, корејски, со кинески знаци) се користат 3-бајтни секвенци. Исто така UTF-8-кодирањето е инфериорен во однос на другите форми на кодирање со брзина на обработка. Сортирањето на бинарен стринг го произведува истиот резултат како бинарен вид на Уникод.

Шемата за кодирање на знаци

Шемата за кодирање на карактери се состои од форма на кодирање на знаци и метод на бајт-по-пикселски аранжман на единични единици. За да се одреди шифрата за кодирање со стандардот Unicode, се дава употреба на почетната бајт редослед (BOM, Byte order mark).

Кога ќе ја вклучите BOM во UTF-8, функцијата на етикетата е ограничена само со укажување на употребата на формата за кодирање. Проблемот за одредување на редот на бајти во UTF-8 не е, бидејќи нејзината големина на кодирање е еден бајт. Употребата на BOM за оваа кодирана форма не е ниту задолжителна ниту препорачана. BOM може да се појави во текстови конвертирани од други кодови кои ја користат ознаката за бајт, или за потпис на кодирање UTF-8. Тоа е низа од 3 бајти EF 16 BB 16 BF 16 .

Како да поставите UTF-8 кодирање

Во HTML, кодирањето на UTF-8 е поставено со користење на следниов код:

˂head

˂meta http-equiv = "Content-Type" содржина = "text / html; charset = utf-8"

Во PHP, UTF-8 кодирањето е наведен со користење на функцијата header () на самиот почеток на датотеката откако ќе се постави вредноста на нивото на излезна грешка:

˂? Php

Error_reporting (-1);

Header ('Content-Type: text / html; charset = utf-8');

За да се поврзете со MySQL бази на податоци, кодирањето на UTF-8 е поставено на следниов начин:

˂? Php

Mysql_set_charset ('utf8');

Во CSS-датотеките, кодирањето на знаци UTF-8 е наведен на следниов начин:

@ Charset "utf-8";

Кога зачувувате датотеки од сите видови, UTF-8 кодирањето без BOM е избрано, во спротивно сајтот нема да работи. За да го направите ова, во програмата DreamWeave, изберете ја изборната ставка "Измени - Својства на страница - Наслов / Кодирање", сменете го кодирањето на UTF-8. Потоа треба повторно да ја вчитате страницата, одштиклирајте го полето "Поврзете потписи на Unicode (BOM)" и примени ги промените. Ако некој текст на страницата или во базата на податоци е внесен со друга форма на кодирање, тогаш тој мора повторно да се внесе или повторно кодира. Кога работите со регуларни изрази, задолжително е да го користите у модификаторот.

Исто така можете да ја зачувате датотеката во кодирањето UTF-8 во Windows Notepad. Откако ќе ја изберете менито "File - Save As ..." поставете ја потребната форма за кодирање и зачувајте ја датотеката во UTF-8 кодирање.

Во текстуалниот уредувач Notepad ++, ако кодирањето е различно од UTF-8, сменете го кодирањето и зачувајте го во кодирањето UTF-8 преку ставката "Конвертирај во UTF-8 без BOM".

Нема алтернатива

Во контекст на глобализацијата, кога политичките и јазичните граници се заматени, карактерите што имаат локални карактеристики стануваат се помалку корисни. Уникод е единствениот набор на знаци кој ги поддржува сите локализации. И UTF-8 е пример за правилна имплементација на Уникод, кој:

  • Поддржува широк спектар на алатки, вклучувајќи компатибилност со ASCII кодирање;
  • Има отпор кон корупцијата на податоците;
  • Лесно и ефикасно во обработка;
  • Не зависи од платформата.

Со доаѓањето на UTF-8, дискусии за тоа која форма на кодирање или карактер се подобра станаа бесмислени.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 mk.birmiss.com. Theme powered by WordPress.