Kako kodirati/dekodirati UTF-8 v JavaScriptu

Kako Kodirati Dekodirati Utf 8 V Javascriptu



UTF-8 pomeni ' 8-bitni format pretvorbe Unicode ” in ustreza odličnemu formatu kodiranja, ki zagotavlja, da so znaki pravilno prikazani na vseh napravah, ne glede na uporabljeni jezik/pisavo. Poleg tega je ta oblika pomožna za spletne strani in se uporablja za shranjevanje, obdelavo in prenos besedilnih podatkov na internetu.

Ta vadnica pokriva spodaj navedena področja vsebine:







Kaj je kodiranje UTF-8?

Kodiranje UTF-8 ” je postopek pretvorbe zaporedja znakov Unicode v kodiran niz, ki obsega 8-bitne bajte. To kodiranje lahko predstavlja velik obseg znakov v primerjavi z drugimi kodiranji znakov.



Kako deluje kodiranje UTF-8?

Med predstavljanjem znakov v UTF-8 je vsaka posamezna kodna točka predstavljena z enim ali več bajti. Sledi razčlenitev kodnih točk v območju ASCII:



  • En sam bajt predstavlja kodne točke v območju ASCII (0–127).
  • Dva bajta predstavljata kodne točke v območju ASCII (128–2047).
  • Trije bajti predstavljajo kodne točke v območju ASCII (2048-65535).
  • Štirje bajti predstavljajo kodne točke v območju ASCII (65536-1114111).

Tako je, da je prvi bajt ' UTF-8 « zaporedje se imenuje » vodilni bajt «, ki daje informacije o številu bajtov v zaporedju in vrednosti kodne točke znaka.
'Vodilni bajt' za zaporedje enega, dveh, treh in štirih bajtov je v območju (0-127), (194-233), (224-239) oziroma (240-247).





Preostali bajti v zaporedju se imenujejo ' zaostajanje ” bajtov. Vsi bajti za dvo-, tri- in štiribajtno zaporedje so v območju (128–191). Tako je, da je mogoče vrednost kodne točke znaka izračunati z analizo začetnih in končnih bajtov.

Kako se izračunajo vrednosti kodnih točk?

Vrednosti kodnih točk za različna zaporedja bajtov so izračunane na naslednji način:



  • Dvobajtno zaporedje: Kodna točka je enakovredna »((lb – 194) * 64) + (tb – 128)«.
  • Tribajtno zaporedje : Kodna točka je enakovredna »((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)«.
  • Štiribajtno zaporedje : Kodna točka je enakovredna »((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)«.

Kako kodirati/dekodirati UTF-8 v JavaScript?

Kodiranje in dekodiranje UTF-8 v JavaScriptu je mogoče izvesti s spodaj navedenimi pristopi:

  • enodeURIComponent() « in » decodeURIComponent() ” Metode.
  • kodirajURI() « in » decodeURI() ” Metode.
  • Regularni izrazi.

Pristop 1: Kodiranje/dekodiranje UTF-8 v JavaScriptu z uporabo metod “encodeURIComponent()” in “decodeURIComponent()”

' encodeURIComponent() ” kodira komponento URI. Prav tako lahko kodira posebne znake, kot so @, &, :, +, $, # itd. decodeURIComponent() ” pa dekodira komponento URI. Te metode je mogoče uporabiti za kodiranje oziroma dekodiranje posredovanih vrednosti v UTF-8.

Sintaksa (»encodeURIComponent()« metoda)

encodeURIComponent ( x )

V dani sintaksi je ' x ” označuje URI, ki ga je treba kodirati.

Povratna vrednost
Ta metoda je pridobila kodiran URI kot niz.

Sintaksa (metoda »decodeURIComponent()«)

decodeURIComponent ( x )

Tukaj, ' x ” se nanaša na URI, ki ga je treba dekodirati.

Povratna vrednost
Ta metoda daje dekodirani URI.

Primer 1: Kodiranje UTF-8 v JavaScript
Ta primer kodira posredovani niz v kodirano vrednost UTF-8 s pomočjo uporabniško definirane funkcije:

funkcijo kodiraj_utf8 ( x ) {
vrnitev unescape ( encodeURIComponent ( x ) ) ;
}
naj val = 'tukaj' ;
konzola. dnevnik ( 'Dana vrednost -> ' + val ) ;
naj encodeVal = kodiraj_utf8 ( val ) ;
konzola. dnevnik ( 'Kodirana vrednost -> ' + encodeVal ) ;

V teh vrsticah kode izvedite spodnje korake:

  • Najprej definirajte funkcijo ' encode_utf8() ”, ki kodira posredovani niz, ki ga predstavlja podani parameter.
  • To kodiranje izvede ' encodeURIComponent() ” v definiciji funkcije.
  • Opomba: ' unescape() ” zamenja vsako ubežno zaporedje z znakom, ki ga predstavlja.
  • Po tem inicializirajte vrednost, ki jo želite kodirati, in jo prikažite.
  • Zdaj pokličite definirano funkcijo in posredujte definirano kombinacijo znakov kot njene argumente za kodiranje te vrednosti v UTF-8.

Izhod

Tukaj je mogoče implicirati, da so posamezni znaki ustrezno predstavljeni in kodirani v UTF-8.

Primer 2: Dekodiranje UTF-8 v JavaScriptu
Spodnja predstavitev kode dekodira posredovano vrednost (v obliki znakov) v kodirano predstavitev UTF-8:

funkcijo decode_utf8 ( x ) {
vrnitev decodeURIComponent ( pobegniti ( x ) ) ;
}
naj val = 'à çè' ;
konzola. dnevnik ( 'Dana vrednost -> ' + val ) ;
pusti dekodirati = decode_utf8 ( val ) ;
konzola. dnevnik ( 'Dekodirana vrednost -> ' + dekodirati ) ;

V tem bloku kode:

  • Podobno definirajte funkcijo ' decode_utf8() «, ki dekodira posredovano kombinacijo znakov prek » decodeURIComponent() ” metoda.
  • Opomba: ' pobeg () ” metoda pridobi nov niz, v katerem so različni znaki nadomeščeni s šestnajstiškimi ubežnimi zaporedji.
  • Po tem določite kombinacijo znakov, ki jih želite dekodirati, in dostopajte do definirane funkcije za ustrezno izvedbo dekodiranja v UTF-8.

Izhod

Tukaj je mogoče implicirati, da je kodirana vrednost v prejšnjem primeru dekodirana na privzeto vrednost.

Pristop 2: Kodiranje/dekodiranje UTF-8 v JavaScriptu z uporabo metod “encodeURI()” in “decodeURI()”

' kodirajURI() ” kodira URI tako, da vsak primerek več znakov nadomesti s številnimi ubežnimi zaporedji, ki predstavljajo kodiranje UTF-8 znaka. V primerjavi z ' encodeURIComponent() ” ta posebna metoda kodira omejene znake.

' decodeURI() ” pa dekodira URI (kodirano). Te metode je mogoče implementirati v kombinaciji za kodiranje in dekodiranje kombinacije znakov v vrednosti, kodirani z UTF-8.

Sintaksa(encodeURI() metoda)

kodirajURI ( x )

V zgornji sintaksi ' x ” ustreza vrednosti, ki jo je treba kodirati kot URI.

Povratna vrednost
Ta metoda pridobi kodirano vrednost v obliki niza.

Sintaksa (decodeURI() metoda)

decodeURI ( x )

Tukaj, ' x ” predstavlja kodiran URI, ki ga je treba dekodirati.

Povratna vrednost
Vrne dekodirani URI kot niz.

Primer 1: Kodiranje UTF-8 v JavaScript
Ta predstavitev kodira posredovano kombinacijo znakov v kodirano vrednost UTF-8:

funkcijo kodiraj_utf8 ( x ) {
vrnitev unescape ( kodirajURI ( x ) ) ;
}
naj val = 'tukaj' ;
konzola. dnevnik ( 'Dana vrednost -> ' + val ) ;
naj encodeVal = kodiraj_utf8 ( val ) ;
konzola. dnevnik ( 'Kodirana vrednost -> ' + encodeVal ) ;

Tukaj se spomnite pristopov za definiranje funkcije, dodeljene za kodiranje. Zdaj uporabite metodo »encodeURI()« za predstavitev posredovane kombinacije znakov kot niz, kodiran z UTF-8. Po tem prav tako definirajte znake, ki jih želite ovrednotiti, in pokličite definirano funkcijo tako, da podate definirano vrednost kot njene argumente za izvedbo kodiranja.

Izhod

Tukaj je očitno, da je posredovana kombinacija znakov uspešno kodirana.

Primer 2: Dekodiranje UTF-8 v JavaScriptu
Spodnja predstavitev kode dekodira kodirano vrednost UTF-8 (v prejšnjem primeru):

funkcijo decode_utf8 ( x ) {
vrnitev decodeURI ( pobegniti ( x ) ) ;
}
naj val = 'à çè' ;
konzola. dnevnik ( 'Dana vrednost -> ' + val ) ;
pusti dekodirati = decode_utf8 ( val ) ;
konzola. dnevnik ( 'Dekodirana vrednost -> ' + dekodirati ) ;

V skladu s to kodo deklarirajte funkcijo ' decode_utf8() ', ki vsebuje navedeni parameter, ki predstavlja kombinacijo znakov, ki jih je treba dekodirati z uporabo ' decodeURI() ” metoda. Zdaj določite vrednost, ki jo želite dekodirati, in pokličite definirano funkcijo, da uporabite dekodiranje za ' UTF-8 ” zastopstvo.

Izhod

Ta rezultat pomeni, da se predhodno kodirana vrednost ustrezno določi.

Pristop 3: Kodiranje/dekodiranje UTF-8 v JavaScriptu z uporabo regularnih izrazov

Ta pristop uporablja kodiranje tako, da je večbajtni niz unicode kodiran v več enobajtnih znakov UTF-8. Podobno se dekodiranje izvede tako, da se kodirani niz dekodira nazaj v večbajtne znake Unicode.

Primer 1: Kodiranje UTF-8 v JavaScript
Spodnja koda kodira večbajtni niz unicode v enobajtne znake UTF-8:

funkcijo kodirajUTF8 ( val ) {
če ( tip val != 'vrvica' ) metati novo TypeError ( 'Parameter' val 'ni niz' ) ;
konst niz_utf8 = val. zamenjati (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 bajta 110yyyyy, 10zzzzzz
funkcijo ( x ) {
je bil ven = x. charCodeAt ( 0 ) ;
vrnitev Vrvica . fromCharCode ( 0xc0 | ven >> 6 , 0x80 | ven & 0x3f ) ; }
) . zamenjati (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 bajti 1110xxxx, 10yyyyyy, 10zzzzzz
funkcijo ( x ) {
je bil ven = x. charCodeAt ( 0 ) ;
vrnitev Vrvica . fromCharCode ( 0xe0 | ven >> 12 , 0x80 | ven >> 6 & 0x3F , 0x80 | ven & 0x3f ) ; }
) ;
konzola. dnevnik ( 'Kodirana vrednost z uporabo regularnega izraza -> ' + niz_utf8 ) ;
}
kodirajUTF8 ( 'tukaj' )

V tem delčku kode:

  • Določite funkcijo ' kodirajUTF8() «, ki vsebuje parameter, ki predstavlja vrednost, ki bo kodirana kot » UTF-8 ”.
  • V njegovi definiciji uporabite preverjanje posredovane vrednosti, ki ni niz, z uporabo ' tip ' in vrne podano izjemo po meri prek ' metati ” ključna beseda.
  • Po tem uporabite » charCodeAt() « in » fromCharCode() ” metode za pridobitev Unicode prvega znaka v nizu in pretvorbo podane vrednosti Unicode v znake.
  • Končno pokličite definirano funkcijo tako, da posredujete dano zaporedje znakov, da kodirate to vrednost kot ' UTF-8 ” zastopstvo.

Izhod

Ta izhod pomeni, da je kodiranje pravilno izvedeno.

Primer 2: Dekodiranje UTF-8 v JavaScriptu
V tej predstavitvi je zaporedje znakov dekodirano v ' UTF-8 ” zastopstvo:

funkcijo decodeUTF8 ( val ) {
če ( tip val != 'vrvica' ) metati novo TypeError ( 'Parameter' val 'ni niz' ) ;
konst str = val. zamenjati (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funkcijo ( x ) {
je bil ven = ( ( x. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) & 0x3f ) ;
vrnitev Vrvica . fromCharCode ( ven ) ; }
) . zamenjati (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funkcijo ( x ) {
je bil ven = ( x. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('à çè')

V tej kodi:

  • Podobno definirajte funkcijo ' dekodirajUTF8() ” s parametrom, ki se nanaša na posredovano vrednost, ki jo je treba dekodirati.
  • V definiciji funkcije preverite pogoj niza posredovane vrednosti prek ' tip ” operaterja.
  • Zdaj uporabite ' charCodeAt() ” za pridobitev Unicode prvega, drugega in tretjega znaka niza.
  • Uporabite tudi ' String.fromCharCode() ” za pretvorbo vrednosti Unicode v znake.
  • Podobno znova ponovite ta postopek, da pridobite Unicode prvega in drugega znaka niza in pretvorite te vrednosti unicode v znake.
  • Na koncu odprite definirano funkcijo, da vrnete dekodirano vrednost UTF-8.

Izhod

Tukaj je mogoče preveriti, ali je dekodiranje opravljeno pravilno.

Zaključek

Kodiranje/dekodiranje v predstavitvi UTF-8 je mogoče izvesti prek » enodeURIComponent()” in ' decodeURIComponent() metode, ' kodirajURI() « in » decodeURI() ” ali z uporabo regularnih izrazov.