/ / utf-8 - kodiranje znakova

utf-8 - kodiranje znakova

Unicode podržava gotovo sve postojećeskup znakova. Najbolji oblik kodiranja Unicode 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 kaoapstraktne matematičke objekte, kao i kombinacije jedinica za pohranu i obradu podataka fiksne veličine - bajta i 32-bitne riječi. Standard kodiranja mora to uzeti u obzir pri određivanju načina na koji su znakovi predstavljeni brojevima.

U računalnim sustavima pohranjeni su cijeli brojevimemorijske ćelije veličine 8 bita (1 bajt), 16 ili 32 bita. Svaki Unicode oblik kodiranja određuje koji slijed ćelija memorije 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 format pretvorbe Unicode. Svaki od tri oblika kodiranja jednako je sredstvo predstavljanja Unicode znakova, ima prednosti u raznim aplikacijama.

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

utf 8 kodiranje

Načelo neisplate

Svaki od Unicode oblika za kodiranje osmišljen je suzimajući u obzir neprihvatljivost djelomičnog preklapanja. Na primjer, Windows 932 generira znakove iz jednog ili dva bajta koda. Duljina slijed ovisi o prvom bajt, tako da vodeći vrijednosti bajta u nizu dva bajta i jedan byte disjunktan. Međutim, vrijednosti jednog bajta i zatvarajućeg bajta slijeda mogu biti jednake. To znači na primjer, da je potraga lik D (šifra 44) nalaze se pogrešno ulazak u drugi dio slijeda dva bajta znakova „D” (kod 84 44). Da bi se utvrdilo koja je sekvenca točna, program mora uzeti u obzir prethodne bajtove.

Situacija je složena ako je vodstvo i zatvaranjebajta. To znači da će, kako bi se uklonile nejasnoće, obaviti obrnuto pretraživanje prije nego što dođe do početka teksta ili jednoznačnog slijeda koda. Ovo nije ne samo nedjelotvorno, već nije zaštićeno od mogućih pogrešaka, jer je jedan bajt dovoljan da cijeli tekst bude nečitljiv.

Izbjegava se format Unicode pretvorbeTaj problem, jer vrijednosti vodećih, zatvarajućih i jedinica za pohranu podataka ne odgovaraju. Zbog toga su sve Unicode šifre prikladne za pretraživanje i usporedbu, a nikada ne daju pogrešan rezultat zbog koincidencije različitih dijelova znakovnog koda. Činjenica da ovi oblici kodiranja slijede načelo ne-preklapanja razlikuje ih od drugih multi-byte istočnoazijskih kodiranja.

Još jedan aspekt ne-presjeka Unicode šifriranjaje da svaki lik ima jasno definirane granice. Time se eliminira potreba skeniranja neodređenog broja prethodnih znakova. Ova značajka kodiranja ponekad se zove self-synchronization. Iskrivljavanje jedne jedinice koda uvodi samo jedan simbol na izobličenje, dok će okolni likovi ostati netaknuti. U 8-bitnom formatu pretvorbe, ako se pokazivač odnosi na bajt koji počinje od 10xxxxxx (u binarnom kodiranju), trajat će od jedne do tri obrnutog prijelaza kako bi se tražilo početak znaka.

utf 8 kodiranje

dosljednost

Konzorcij Unicode u potpunosti podržava sve3 oblika kodiranja. Važno je da se ne suprotstavite utf-8 i Unicode jer su svi formati pretvorbe jednako vrijedni utjelovljenja Unicode oblika kodiranja znakova.

Orijentacija bita

Da biste predstavili UTF-32 znak, potrebna vam je 32-bitna jedinica koda koja odgovara Unicode kodu. UTF-16 - od jedne do dvije 16-bitne jedinice. I utf-8 koristi do 4 bajta.

Utf-8 kodiranje je dizajnirano za kompatibilnost sASCII-sustavi usmjereni prema bajtovima. Većina postojećih praksi softvera i informatičke tehnologije dugo se oslanjala na reprezentaciju znakova kao niz bajtova. Skup protokola ovisi o nepromjenljivosti ASCII kodiranja i koristi ili izbjegava posebne kontrolne znakove. Jednostavan način prilagodbe Unicodea takvim situacijama je primjenom 8-bitnog kodiranja za predstavljanje Unicode znakova ekvivalentnih bilo kojem ASCII znaku ili kontrolnom znaku. U tu svrhu namijenjeno je utf-8 kodiranje.

Varijabilna duljina

utf-8 je šifriranje promjenjive dužine koja se sastoji od8-bitne jedinice za pohranu podataka, od kojih su najznačajniji bitovi koji upućuju na koji dio slijeda svaka pojedinačna bajka pripada. Jedan je raspon vrijednosti rezerviran za prvi element kodnog slijeda, a drugi za one koji slijede. To osigurava da se kodiranje ne presijeca.

utf 8 kodiranje znakova

ASCII

utf-8 kodiranje u potpunosti podržava ASCII kodove(0x00-0x7F). To znači da se Unicode U + 0000-U + 007F znakovi 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 se ne koriste u bilo kojem drugom bajtu reprezentacije Unicode znakova. Za kodiranje ne-ideografskih znakova koji nisu ASCII, koristi se niz od dvije bajta. Likovi U + 0800-U + FFFF raspona predstavljaju tri bajta, a dodatni znakovi s kodovima veći od U + FFFF zahtijevaju četiri bajta.

Opseg primjene

Utf-8 kodiranje obično ima prednost u HTML protokolu i slično.

XML je postao prvi standard s punom podrškomutf-8 kodiranje. Organizacije za normizaciju također ga preporučuju. Problem podrške u URL-ovima koji nisu ASCII znakova riješen je kada su W3C i IETF-ovi inženjerski tim dogovorili kodiranje svih URL-ova isključivo u utf-8.

ASCII kompatibilnost olakšava prelazak na novusoftver. Većina urednika teksta radi s utf-8, uključujući JEdit, Emacs, BBEdit, Eclipse i Windows Notepad. Nijedan drugi oblik Unicode kodiranja ne može se pohvaliti takvom podrškom od alata.

Prednost kodiranja jest tosastoji se od reda bajtova. Lako je raditi s utf-8 nizovima u C i drugim programskim jezicima. Ovo je jedini oblik kodiranja koji ne zahtijeva oznaku BOM bajtova ili deklaraciju XML kodiranja.

html utf 8 kodiranje

self-sinkronizacija

U okruženju koje koristi 8-bitnu obradu znakova, u usporedbi s ostalim 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 za pronalaženje početka znaka, budući da je početni bajt ograničen na fiksni raspon vrijednosti.
  • Nema raskrižja vrijednosti bajtova.

Usporedba koristi

Utf-8 kodiranje je kompaktno. No, kada se koriste za kodiranje istočnoazijskih znakova (kineski, japanski, korejski, pomoću kineskih znakova) koriste se sekvence od 3 bajta. Također, utf-8 kodiranje je inferiorni od ostalih oblika kodiranja u smislu brzine obrade. Binarno sortiranje nizova daje isti rezultat kao i Unicode binarni sortiranje.

Shema kodiranja znakova

Shema kodiranja znakova sastoji se od obrascakodiranje znakova i byte by byte kodne jedinice. Upotreba oznake naloga za početni bajt (BOM, oznaka bajtova) predviđena je za definiranje Unicode sheme kodiranja.

Kada je BOM omogućen u utf-8, funkcija oznakeograničeno samo u odnosu na upotrebu oblika kodiranja. Problem određivanja reda bajtova u utf-8 nije, jer je njezina veličina jedinica kodiranja jednaka jednom bajtu. Korištenje BOM-a za ovaj oblik kodiranja nije niti potrebno niti preporučljivo. BOM se može pojaviti u tekstovima konvertiranim iz drugih kodova pomoću oznake narudžbe bajta ili za potpise kodiranja utf-8. To je redoslijed od 3 bajta EF16 BB16 BF16,

utf 8 kodirana datoteka

Kako postaviti utf-8 kodiranje

U HTML-u, utf-8 je postavljen sa sljedećim kodom:

glava

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

U PHP-u kodiranje utf-8 postavlja se pomoću funkcije 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 spajanje na MySQL baze podataka, utf-8 kodiranje je postavljeno na sljedeći način:

˂? Php

mysql_set_charset ("utf8");

U CSS datotekama kodiranje znakova utf-8 označeno je kako slijedi:

@charset "utf-8";

spremite na utf 8

Odabran je spremanje datoteka svih vrstautf-8 kodiranje bez BOM-a, inače 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. Zatim trebate ponovo učitati stranicu, uklonite kvačicu iz stavke "Povezivanje Unicode Signature (BOM)" i primijenite promjene. Ako je bilo koji tekst na stranici ili u bazu unesen drugim oblikom kodiranja, onda ga mora ponovno unijeti ili recodirati. Kada radite s redovitim izrazima, neophodno je koristiti modifikator u.

Također možete spremiti datoteku u utf-8 kodiranje u programu Windows Notepad. Nakon odabira stavke izbornika "File - Save As ...", postavite potrebni obrazac za kodiranje i spremite datoteku u utf-8 kodiranje.

U uređivaču teksta Notepad ++, ako se kodiranje razlikuje od utf-8, koristite stavku izbornika "Pretvori u utf-8 bez BOM" kako biste promijenili kodiranje i spremili ga na utf-8.

utf 8 bez bom

Nema alternative

U kontekstu globalizacije, kada su politički ibrišu se jezične granice, skup znakova koji imaju lokalne značajke postaju neprikladni. Unicode je jedini skup znakova s ​​podrškom za sve lokalizacije. A utf-8 je primjer pravilne implementacije Unicode, koji:

  • podržava širok raspon alata, uključujući kompatibilnost s ASCII;
  • otporna na korupciju podataka;
  • jednostavan i učinkovit u obradi;
  • ne ovisi o platformi.

S pojavom utf-8, rasprave o tome koji oblik kodiranja ili skup znakova su bolji, postali su besmisleni.

Pročitajte više: