Kako kodirati/dekodirati UTF-8 u JavaScriptu

Kako Kodirati Dekodirati Utf 8 U Javascriptu



UTF-8 je kratica za ' Format Unicode transformacije 8-bitni ” i odgovara izvrsnom formatu kodiranja koji osigurava da se znakovi ispravno prikazuju na svim uređajima bez obzira na korišteni jezik/pismo. Također, ovaj format je pomoćni za web stranice i koristi se za pohranu, obradu i prijenos tekstualnih podataka na internetu.

Ovaj vodič pokriva dolje navedena područja sadržaja:







Što je UTF-8 kodiranje?

UTF-8 kodiranje ” je postupak pretvaranja niza Unicode znakova u kodirani niz koji se sastoji od 8-bitnih bajtova. Ovo kodiranje može predstavljati veliki raspon znakova u usporedbi s drugim kodiranjem znakova.



Kako radi UTF-8 kodiranje?

Prilikom predstavljanja znakova u UTF-8, svaka pojedinačna točka koda predstavljena je jednim ili više bajtova. Slijedi raščlamba kodnih točaka u ASCII rasponu:



  • Jedan bajt predstavlja kodne točke u ASCII rasponu (0-127).
  • Dva bajta predstavljaju kodne točke u ASCII rasponu (128-2047).
  • Tri bajta predstavljaju kodne točke u ASCII rasponu (2048-65535).
  • Četiri bajta predstavljaju kodne točke u ASCII rasponu (65536-1114111).

Takav je da je prvi bajt ' UTF-8 ” niz se naziva „ vodeći bajt ” koji daje informacije o broju bajtova u nizu i vrijednosti kodne točke znaka.
'Vodeći bajt' za niz od jednog, dva, tri i četiri bajta je u rasponu (0-127), (194-233), (224-239), odnosno (240-247).





Ostali bajtovi u nizu nazivaju se ' zaostajući ” bajtova. Svi bajtovi za niz od dva, tri i četiri bajta su u rasponu (128-191). To je takvo da se vrijednost kodne točke znaka može izračunati analizom bajtova na početku i na kraju.

Kako se izračunavaju vrijednosti kodnih bodova?

Vrijednosti kodnih točaka za različite nizove bajtova izračunavaju se na sljedeći način:



  • Dvobajtni niz: Kodna točka je ekvivalentna '((lb – 194) * 64) + (tb – 128)'.
  • Niz od tri bajta : Kodna točka je ekvivalentna '((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)'.
  • Niz od četiri bajta : Kodna točka je ekvivalentna '((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)'.

Kako kodirati/dekodirati UTF-8 u JavaScriptu?

Kodiranje i dekodiranje UTF-8 u JavaScriptu može se provesti putem dolje navedenih pristupa:

  • enodeURIComponent() ' i ' decodeURIComponent() ” Metode.
  • kodirajURI() ' i ' decodeURI() ” Metode.
  • Regularni izrazi.

Pristup 1: Kodiranje/dekodiranje UTF-8 u JavaScriptu korištenjem metoda “encodeURIComponent()” i “decodeURIComponent()”

' encodeURIComponent() ” metoda kodira URI komponentu. Također, može kodirati posebne znakove kao što su @, &, :, +, $, #, itd. decodeURIComponent() ” metoda, međutim, dekodira URI komponentu. Ove se metode mogu koristiti za kodiranje i dekodiranje proslijeđenih vrijednosti u UTF-8.

Sintaksa (“encodeURIComponent()” metoda)

encodeURIComponent ( x )

U navedenoj sintaksi, ' x ” označava URI koji treba kodirati.

Povratna vrijednost
Ova metoda je dohvatila kodirani URI kao niz.

Sintaksa (“decodeURIComponent()” metoda)

decodeURIComponenta ( x )

Ovdje, ' x ” odnosi se na URI koji treba dekodirati.

Povratna vrijednost
Ova metoda daje dekodirani URI.

Primjer 1: Kodiranje UTF-8 u JavaScriptu
Ovaj primjer kodira proslijeđeni niz u kodiranu UTF-8 vrijednost uz pomoć korisnički definirane funkcije:

funkcija kodiranje_utf8 ( x ) {
povratak ubjeći se ( encodeURIComponent ( x ) ) ;
}
neka val = 'ovdje' ;
konzola. log ( 'Dana vrijednost -> ' + val ) ;
neka encodeVal = kodiranje_utf8 ( val ) ;
konzola. log ( 'Kodirana vrijednost -> ' + encodeVal ) ;

U ovim linijama koda izvedite dolje navedene korake:

  • Najprije definirajte funkciju ' kodiranje_utf8() ” koji kodira proslijeđeni niz predstavljen navedenim parametrom.
  • Ovo kodiranje vrši ' encodeURIComponent() ” metoda u definiciji funkcije.
  • Bilješka: ' poništi izlaz () ” metoda zamjenjuje bilo koju izlaznu sekvencu sa znakom koji ona predstavlja.
  • Nakon toga inicijalizirajte vrijednost koju želite kodirati i prikažite je.
  • Sada pozovite definiranu funkciju i proslijedite definiranu kombinaciju znakova kao svoje argumente za kodiranje ove vrijednosti u UTF-8.

Izlaz

Ovdje se može implicirati da su pojedinačni znakovi predstavljeni i kodirani u skladu s tim u UTF-8.

Primjer 2: Dekodiranje UTF-8 u JavaScriptu
Donja demonstracija koda dekodira proslijeđenu vrijednost (u obliku znakova) u kodiranu UTF-8 reprezentaciju:

funkcija dekodirati_utf8 ( x ) {
povratak decodeURIComponenta ( pobjeći ( x ) ) ;
}
neka val = 'à çè' ;
konzola. log ( 'Dana vrijednost -> ' + val ) ;
neka dekodira = dekodirati_utf8 ( val ) ;
konzola. log ( 'Dekodirana vrijednost -> ' + dekodirati ) ;

U ovom bloku koda:

  • Isto tako, definirajte funkciju ' decode_utf8() ' koji dekodira proslijeđenu kombinaciju znakova putem ' decodeURIComponent() ” metoda.
  • Bilješka: ' pobjeći() ” metoda dohvaća novi niz u kojem su različiti znakovi zamijenjeni heksadecimalnim izlaznim nizovima.
  • Nakon toga odredite kombinaciju znakova koje treba dekodirati i pristupite definiranoj funkciji za odgovarajuće dekodiranje u UTF-8.

Izlaz

Ovdje se može implicirati da je kodirana vrijednost u prethodnom primjeru dekodirana na zadanu vrijednost.

Pristup 2: Kodiranje/dekodiranje UTF-8 u JavaScriptu korištenjem metoda “encodeURI()” i “decodeURI()”

' kodirajURI() ” metoda kodira URI zamjenjujući svaku instancu višestrukih znakova s ​​određenim brojem izlaznih nizova koji predstavljaju UTF-8 kodiranje znaka. U usporedbi s ' encodeURIComponent() ”, ova posebna metoda kodira ograničene znakove.

' decodeURI() ” metoda, međutim, dekodira URI (kodiran). Ove metode mogu se implementirati u kombinaciji za kodiranje i dekodiranje kombinacije znakova u UTF-8 kodiranoj vrijednosti.

Sintaksa(encodeURI() metoda)

kodiratiURI ( x )

U gornjoj sintaksi, ' x ” odgovara vrijednosti koju treba kodirati kao URI.

Povratna vrijednost
Ova metoda dohvaća kodiranu vrijednost u obliku niza.

Sintaksa(decodeURI() metoda)

decodeURI ( x )

Ovdje, ' x ” predstavlja kodirani URI koji treba dekodirati.

Povratna vrijednost
Vraća dekodirani URI kao niz.

Primjer 1: Kodiranje UTF-8 u JavaScriptu
Ova demonstracija kodira proslijeđenu kombinaciju znakova u kodiranu UTF-8 vrijednost:

funkcija kodiranje_utf8 ( x ) {
povratak ubjeći se ( kodiratiURI ( x ) ) ;
}
neka val = 'ovdje' ;
konzola. log ( 'Dana vrijednost -> ' + val ) ;
neka encodeVal = kodiranje_utf8 ( val ) ;
konzola. log ( 'Kodirana vrijednost -> ' + encodeVal ) ;

Ovdje se prisjetite pristupa za definiranje funkcije dodijeljene za kodiranje. Sada primijenite metodu 'encodeURI()' za predstavljanje proslijeđene kombinacije znakova kao UTF-8 kodirani niz. Nakon toga, na isti način, definirajte znakove koje treba procijeniti i pozovite definiranu funkciju prosljeđivanjem definirane vrijednosti kao svojih argumenata za izvođenje kodiranja.

Izlaz

Ovdje je vidljivo da je proslijeđena kombinacija znakova uspješno kodirana.

Primjer 2: Dekodiranje UTF-8 u JavaScriptu
Donja demonstracija koda dekodira kodiranu UTF-8 vrijednost (u prethodnom primjeru):

funkcija dekodirati_utf8 ( x ) {
povratak decodeURI ( pobjeći ( x ) ) ;
}
neka val = 'à çè' ;
konzola. log ( 'Dana vrijednost -> ' + val ) ;
neka dekodira = dekodirati_utf8 ( val ) ;
konzola. log ( 'Dekodirana vrijednost -> ' + dekodirati ) ;

Prema ovom kodu, deklarirajte funkciju ' decode_utf8() ” koji sadrži navedeni parametar koji predstavlja kombinaciju znakova koji se dekodiraju pomoću “ decodeURI() ” metoda. Sada navedite vrijednost koju treba dekodirati i pozovite definiranu funkciju za primjenu dekodiranja na ' UTF-8 ” reprezentacija.

Izlaz

Ovaj ishod implicira da je prethodno kodirana vrijednost odlučena u skladu s tim.

Pristup 3: Kodiranje/dekodiranje UTF-8 u JavaScriptu pomoću regularnih izraza

Ovaj pristup primjenjuje kodiranje tako da je višebajtni unicode niz kodiran u UTF-8 više jednobajtnih znakova. Isto tako, dekodiranje se provodi tako da se kodirani niz dekodira natrag u višebajtne Unicode znakove.

Primjer 1: Kodiranje UTF-8 u JavaScriptu
Donji kod kodira višebajtni Unicode niz u UTF-8 jednobajtne znakove:

funkcija kodiratiUTF8 ( val ) {
ako ( vrsta val != 'niz' ) bacanje novi TypeError ( 'Parametar' val 'nije niz' ) ;
konst niz_utf8 = val. zamijeniti (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 bajta 110yyyyy, 10zzzzzz
funkcija ( x ) {
bio je van = x. charCodeAt ( 0 ) ;
povratak Niz . fromCharCode ( 0xc0 | van >> 6 , 0x80 | van i 0x3f ) ; }
) . zamijeniti (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 bajta 1110xxxx, 10yyyyyy, 10zzzzzz
funkcija ( x ) {
bio je van = x. charCodeAt ( 0 ) ;
povratak Niz . fromCharCode ( 0xe0 | van >> 12 , 0x80 | van >> 6 i 0x3F , 0x80 | van i 0x3f ) ; }
) ;
konzola. log ( 'Kodirana vrijednost korištenjem regularnog izraza -> ' + niz_utf8 ) ;
}
kodiratiUTF8 ( 'ovdje' )

U ovom isječku koda:

  • Definirajte funkciju ' kodirajUTF8() ' koji sadrži parametar koji predstavlja vrijednost koju treba kodirati kao ' UTF-8 ”.
  • U svojoj definiciji primijenite provjeru na proslijeđenu vrijednost koja nije niz pomoću ' vrsta ” i vrati navedenu prilagođenu iznimku putem „ bacanje ” ključna riječ.
  • Nakon toga primijenite ' charCodeAt() ' i ' fromCharCode() ” metode za dohvaćanje Unicodea prvog znaka u nizu i pretvaranje dane Unicode vrijednosti u znakove.
  • Na kraju, pozovite definiranu funkciju prosljeđivanjem zadanog niza znakova za kodiranje ove vrijednosti kao ' UTF-8 ” reprezentacija.

Izlaz

Ovaj izlaz znači da je kodiranje izvršeno na odgovarajući način.

Primjer 2: Dekodiranje UTF-8 u JavaScriptu
U ovoj demonstraciji, niz znakova je dekodiran u ' UTF-8 ” reprezentacija:

funkcija dekodirati UTF8 ( val ) {
ako ( vrsta val != 'niz' ) bacanje novi TypeError ( 'Parametar' val 'nije niz' ) ;
konst str = val. zamijeniti (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funkcija ( x ) {
bio je van = ( ( x. charCodeAt ( 0 ) i 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) i 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) i 0x3f ) ;
povratak Niz . fromCharCode ( van ) ; }
) . zamijeniti (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funkcija ( x ) {
bio je van = ( x. charCodeAt ( 0 ) i 0x1f ) < '+str);
}
decodeUTF8('à çè')

U ovom kodu:

  • Slično, definirajte funkciju ' dekodiranjeUTF8() ” koji ima parametar koji se odnosi na proslijeđenu vrijednost koju treba dekodirati.
  • U definiciji funkcije provjerite uvjet niza proslijeđene vrijednosti putem ' vrsta ” operator.
  • Sada primijenite ' charCodeAt() ” metoda za dohvaćanje Unicodea prvog, drugog i trećeg znakova u nizu.
  • Također, primijenite ' String.fromCharCode() ” za pretvaranje Unicode vrijednosti u znakove.
  • Isto tako, ponovno ponovite ovaj postupak kako biste dohvatili Unicode prvog i drugog znakova niza i transformirali te Unicode vrijednosti u znakove.
  • Na kraju, pristupite definiranoj funkciji za vraćanje UTF-8 dekodirane vrijednosti.

Izlaz

Ovdje se može provjeriti je li dekodiranje ispravno obavljeno.

Zaključak

Kodiranje/dekodiranje u UTF-8 reprezentaciji može se izvršiti putem ' enodeURIComponent()” i ' decodeURIComponent() metode, ' kodirajURI() ' i ' decodeURI() ” ili korištenjem regularnih izraza.