RačunalaProgramiranje

UTF-8 - kodiranje znakova

Unicode podržava gotovo sve postojeće skupove znakova. Najbolje kodiranje za Unicode skup znakova je UTF-8 kodiranje. Omogućuje kompatibilnost s ASCII, otpornost na korupciju podataka, učinkovitost i jednostavnost obrade. Ali o svemu u redu.

Obrasci kodiranja

Računala rade s brojevima ne samo kao apstraktni matematički objekti, već kao kombinacije jedinica pohrane i obrade fiksnih veličina informacija bajtova i 32-bitnih riječi. Standard kodiranja mora to uzeti u obzir prilikom određivanja načina na koji su znakovi predstavljeni brojevima.

U računalnim sustavima, cijeli brojevi se pohranjuju u memorijske ćelije od 8 bita (1 bajt), 16 ili 32 bita. Svaki Unicodeov oblik za kodiranje određuje koji slijed memorijskih ćelija predstavlja cijeli broj koji odgovara određenom znaku. Standard sadrži tri različita oblika kodiranja Unicode znakova: 8, 16 i 32-bitni blokovi. Prema tome, oni se nazivaju UTF-8, UTF-16 i UTF-32. Naziv UTF označava Unicode format pretvorbe. Svaki od tri oblika kodiranja jednako je sredstvo predstavljanja Unicode znakova, ima prednosti u raznim aplikacijama.

Ova kodiranja mogu se koristiti za predstavljanje svih znakova Unicode standarda. Stoga su u potpunosti kompatibilni s rješenjima iz različitih razloga koji koriste različite oblike kodiranja. Svako kodiranje može se jedinstveno pretvoriti u bilo koju drugu, bez gubitka podataka.

Načelo neisporavanja

Svaki od Unicode oblika za kodiranje dizajniran je uzevši u obzir neprihvatljivost djelomičnog preklapanja. Na primjer, Windows-932 generira znakove iz jednog ili dva bajta koda. Duljina slijeda ovisi o prvom bajtu, tako da se vrijednosti vodećih bajtova u nizu od dva bajta i jednim bajtom ne presijecaju. Međutim, vrijednosti jednog bajta i zatvarajućeg bajta slijeda mogu biti jednake. To znači, na primjer, da prilikom traženja znaka D (šifra 44) možete pogrešno pronaći da ulazi u drugi dio redoslijeda dva bajta znaka "D" (šifra 84 44). Da bi se utvrdilo koja je sekvenca točna, program mora uzeti u obzir prethodne bajtove.

Situacija postaje složenija ako se majstor i završni bajt poklapaju. To znači da će preokrenuti dvosmislenost, obrnuto pretraživanje biti izvršeno sve do početka teksta ili nedvosmislenog slijeda koda. Ovo nije ne samo neučinkovito, već nije zaštićeno od mogućih pogrešaka, jer je jedan loš bajt dovoljan da cijeli tekst bude nečitljiv.

Format pretvorbe Unicode izbjegava taj problem jer vrijednosti vodeće, prateće i pojedinačne jedinice pohrane podataka ne odgovaraju. Zbog toga su sve Unicode šifre prikladne za pretraživanje i usporedbu, nikada ne daju pogrešan rezultat zbog koincidencije različitih dijelova znakovnog koda. Činjenica da ti kodni oblici udovoljavaju načelu neraspoređivanja razlikuje ih od drugih multi-byte istočnoazijskih kodiranja.

Još jedan aspekt ne-presjeka Unicode kodiranja je da svaki znak ima jasno definirane granice. Time se eliminira potreba skeniranja neodređenog broja prethodnih znakova. Ova značajka kodiranja ponekad se zove self-synchronization. Izobličavanje jedne jedinice koda dovodi do izobličenja samo jednog znaka, a okolni simboli ostaju netaknuti. U 8-bitnom formatu pretvorbe, ako se pokazivač odnosi na bajt koji počinje s 10xxxxxx (u binarnom kodiranju), potrebno je da se pronađe početak znaka od jedne do tri obrnute prijelaze.

dosljednost

Konzorcij Unicode u potpunosti podržava sve 3 oblika kodiranja. Važno je da se ne suprotstavite UTF-8 i Unicode jer su svi formati pretvorbe jednako legitimne implementacije Unicode oblika kodiranja znakova.

Bajt orijentacije

Da biste prikazali simbol UTF-32, potrebna vam je jedna 32-bitna jedinica koda koja odgovara Unicodom kodu. UTF-16 - od jedne do dvije 16-bitne jedinice. A UTF-8 koristi do 4 bajta.

Kodiranje UTF-8 je dizajnirano za kompatibilnost s byte orijentiranim sustavima zasnovanim na ASCII. Većina postojećih programa i informacijske tehnologije dugo se oslanjaju na prikaz simbola u obliku nizova bajtova. Mnogi protokoli ovise o nepromjenjivosti ASCII kodiranja i koriste ili izbjegavaju posebne kontrolne znakove. Jednostavan način prilagodbe Unicodea takvim situacijama je korištenje 8-bitnog kodiranja za predstavljanje Unicode znakova koji su ekvivalentni bilo kojem ASCII znaku ili kontrolnom znaku. Za to je namijenjeno kodiranje UTF-8.

Varijabilna duljina

UTF-8 je šifriranje promjenjive dužine koja se sastoji od 8-bitnih jedinica za pohranu informacija čiji visoki bitovi pokazuju koji dio sekvence pripada svakom bajtu. Jedan je raspon vrijednosti rezerviran za prvi element kodnog slijeda, drugi za sljedeće elemente. To osigurava odjeljenje kodiranja.

ASCII

UTF-8 kodiranje u potpunosti podržava ASCII kodove (0x00-0x7F). To znači da se Unicodeovi znakovi U + 0000-U + 007F pretvaraju u jedan bajt 0x00-0x7F UTF-8 i time postaju nerazlučivi od ASCII. Štoviše, kako bi se izbjegla nejasnoća, vrijednosti 0x00-0x7F više se ne koriste u bilo kojem bajtu reprezentacije Unicode znakova. Za kodiranje ne-ideografskih simbola osim ASCII, koristi se niz od dvije bajta. Simboli raspona U + 0800-U + FFFF prikazani su s tri bajta, a dodatni kodovi s kodovima veći od U + FFFF zahtijevaju četiri bajta.

Opseg primjene

Kodiranje UTF-8 obično je poželjno u HTML protokolu i slično.

XML je postao prvi standard s punom podrškom za kodiranje UTF-8. Organizacije uključene u standardizaciju također preporučuju. Problem podrške za URL adrese, osim ASCII znakova, riješen je kada su konzorcij W3C i IETF-ova inženjerska grupa pristale šifrirati sve URL-ove isključivo u UTF-8.

Kompatibilnost s ASCII olakšava prijelaz na novi softver. Uz UTF-8, većina tekst urednika rade, uključujući JEdit, Emacs, BBEdit, Eclipse i Notepad operacijskog sustava Windows. Nijedan drugi oblik Unicode kodiranja ne može se pohvaliti takvom podrškom iz alata.

Prednost kodiranja je da se sastoji od niza bajtova. Uz UTF-8 nizove, lako je raditi na C i drugim programskim jezicima. Ovo je jedini oblik kodiranja koji ne zahtijeva označavanje redoslijeda BOM bajta ili deklaracije kodiranja u XML-u.

self-sinkronizacija

U okruženju koje koristi 8-bitnu obradu znakova, u usporedbi s drugim kodnim kodovima s više bajta, UTF-8 ima sljedeće prednosti:

  • Prvi bajt šifrirane sekvence sadrži informacije o njegovoj duljini. To povećava učinkovitost izravnog pretraživanja.
  • Pojednostavljeno je pronaći početak znaka, budući da je početni bajt ograničen na fiksni raspon vrijednosti.
  • Nema raskrižja vrijednosti bajtova.

Usporedba prednosti

UTF-8 kodiranje je kompaktno. No pri prijavi za kodiranje istočnoazijskih znakova (kineski, japanski, korejski, koristeći kineske znakove) koriste se 3-byte sekvencije. Također kodiranje UTF-8 je inferiorno drugim oblicima kodiranja brzinom obrade. Binarno sortiranje nizova proizvodi isti rezultat kao binarni Unicode.

Shema kodiranja znakova

Shema kodiranja znakova sastoji se od oblika za kodiranje znakova i metode byte-by-pixel rasporeda kodnih jedinica. Za određivanje sheme kodiranja prema Unicode standardu, dobivena je upotreba početne oznake reda bajta (BOM, oznaka reda bita).

Kada uključite BOM u UTF-8, funkcija oznake ograničena je samo označavanjem upotrebe oblika za kodiranje. Problem određivanja redoslijeda bajtova u UTF-8 nije, budući da je njegova jedinica kodiranja veličine jedan bajt. Korištenje BOM-a za ovaj obrazac za kodiranje nije niti obavezno niti preporučljivo. BOM se može pojaviti u tekstovima konvertiranim iz drugih kodova koji koriste oznaku narudžbi bajtova ili za potpisivanje kodiranja UTF-8. To je redoslijed od 3 bajta EF 16 BB 16 BF 16 .

Kako postaviti UTF-8 kodiranje

Kod HTML-a, kodiranje UTF-8 postavljeno je pomoću sljedećeg koda:

glava

˂meta http-equiv = "Content-Type" content = "tekst / html; charset = utf-8" ˃

U PHP-u kodiranje UTF-8 određuje se funkcijom zaglavlja () na samom početku datoteke nakon postavljanja vrijednosti izlazne razine pogreške:

˂? Php

Error_reporting (-1);

Zaglavlje ("Vrsta sadržaja: tekst / html; charset = utf-8");

Za povezivanje s MySQL bazama podataka, kodiranje UTF-8 je postavljeno na sljedeći način:

˂? Php

Mysql_set_charset ('utf8');

U CSS datotekama kodiranje znakova UTF-8 određeno je kako slijedi:

@charset "utf-8";

Pri spremanju datoteka svih vrsta, odabran je kodiranje UTF-8 bez BOM, inače web stranica neće funkcionirati. Da biste to učinili, u programu DreamWeave odaberite stavku izbornika "Promjene - Svojstva stranice - Naslov / kodiranje", promijenite kodiranje na UTF-8. Tada biste trebali ponovo učitati stranicu, poništite okvir "Spojite Unicode potpise (BOM)" i primijenite promjene. Ako je bilo koji tekst na stranici ili u bazi podataka unesen drugim oblikom kodiranja, onda ga mora ponovno unijeti ili ponovno kodirati. Kada radite s uobičajenim izrazima, obvezno je koristiti modifikator u.

Također možete spremiti datoteku u UTF-8 kodiranje u programu Windows Notepad. Nakon odabira stavke izbornika "Datoteka - Spremi kao ..." postavite potrebni obrazac za kodiranje i spremite datoteku u UTF-8 kodiranje.

U Notepad ++ uređivaču teksta, ako se kodiranje razlikuje od UTF-8, promijenite kodiranje i spremite ga u UTF-8 kodiranje putem stavke izbornika "Pretvori u UTF-8 bez BOM-a".

Nema alternative

U kontekstu globalizacije, kada su političke i jezične granice zamagljene, skupovi karaktera koji imaju lokalne karakteristike postaju manje korisni. Unicode je jedini skup znakova koji podržava sve lokalizacije. A UTF-8 je primjer ispravne implementacije Unicode, koji:

  • Podržava širok raspon alata, uključujući kompatibilnost s ASCII kodiranjem;
  • Ima otpor na korupciju podataka;
  • Jednostavan i učinkovit u obradi;
  • Ne ovisi o platformi.

S pojavom UTF-8, rasprave o tome koji je oblik kodiranja ili skup znakova bolji postaju besmislene.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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