Ako kódovať/dekódovať UTF-8 v JavaScripte

Ako Kodovat Dekodovat Utf 8 V Javascripte



UTF-8 znamená „ 8-bitový transformačný formát Unicode “ a zodpovedá skvelému formátu kódovania, ktorý zaisťuje správne zobrazenie znakov na všetkých zariadeniach bez ohľadu na použitý jazyk/písmo. Tento formát je tiež nápomocný pre webové stránky a používa sa na ukladanie, spracovanie a prenos textových údajov na internete.

Tento tutoriál pokrýva nižšie uvedené oblasti obsahu:







Čo je kódovanie UTF-8?

Kódovanie UTF-8 “ je postup transformácie sekvencie znakov Unicode na kódovaný reťazec obsahujúci 8-bitové bajty. Toto kódovanie môže predstavovať veľký rozsah znakov v porovnaní s inými kódovaniami znakov.



Ako funguje kódovanie UTF-8?

Pri reprezentácii znakov v UTF-8 je každý jednotlivý bod kódu reprezentovaný jedným alebo viacerými bajtmi. Nasleduje rozpis kódových bodov v rozsahu ASCII:



  • Jeden bajt predstavuje kódové body v rozsahu ASCII (0-127).
  • Dva bajty predstavujú kódové body v rozsahu ASCII (128-2047).
  • Tri bajty predstavujú kódové body v rozsahu ASCII (2048-65535).
  • Štyri bajty predstavujú kódové body v rozsahu ASCII (65536-1114111).

Je to také, že prvý bajt „ UTF-8 “sekvencia sa označuje ako „ vodiaci bajt ”, ktorý poskytuje informácie o počte bajtov v sekvencii a hodnote kódu znaku.
„Leader byte“ pre jednu, dvoj, troj a štvorbajtovú sekvenciu je v rozsahu (0-127), (194-233), (224-239) a (240-247).





Zvyšné bajty v poradí sa nazývajú „ koncové ”bajtov. Všetky bajty pre dvoj, troj a štvorbajtovú sekvenciu sú v rozsahu (128-191). Je to také, že hodnotu kódu znaku možno vypočítať analýzou úvodných a koncových bajtov.

Ako sa vypočítavajú bodové hodnoty kódu?

Hodnoty kódových bodov pre rôzne bajtové sekvencie sa vypočítavajú takto:



  • Dvojbajtová sekvencia: Bod kódu je ekvivalentný „((lb – 194) * 64) + (tb – 128)“.
  • Trojbajtová sekvencia : Bod kódu je ekvivalentný „((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)“.
  • Štvorbajtová sekvencia : Bod kódu je ekvivalentný „((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)“.

Ako kódovať/dekódovať UTF-8 v JavaScripte?

Kódovanie a dekódovanie UTF-8 v JavaScripte je možné vykonať pomocou nižšie uvedených prístupov:

  • enodeURIComponent() “ a „ decodeURIComponent() “Metódy.
  • encodeURI() “ a „ decodeURI() “Metódy.
  • Regulárne výrazy.

Prístup 1: Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou metód „encodeURIComponent()“ a „decodeURIComponent()“

' encodeURIComponent() ” kóduje komponent URI. Môže tiež zakódovať špeciálne znaky ako @, &, :, +, $, # atď. decodeURIComponent() ” však dekóduje komponent URI. Tieto metódy možno použiť na kódovanie a dekódovanie odovzdaných hodnôt do UTF-8, resp.

Syntax(metóda “encodeURIComponent()”)

encodeURIComponent ( X )

V danej syntaxi „ X ” označuje URI, ktoré sa má zakódovať.

Návratová hodnota
Táto metóda získala zakódovaný URI ako reťazec.

Syntax(metóda “decodeURIComponent()”)

decodeURIComponent ( X )

Tu, ' X “ označuje URI, ktoré sa má dekódovať.

Návratová hodnota
Táto metóda poskytuje dekódované URI.

Príklad 1: Kódovanie UTF-8 v JavaScripte
Tento príklad zakóduje odovzdaný reťazec na zakódovanú hodnotu UTF-8 pomocou funkcie definovanej používateľom:

funkciu encode_utf8 ( X ) {
vrátiť uniknúť ( encodeURIComponent ( X ) ) ;
}
nech val = 'tu' ;
konzola. log ( 'Daná hodnota -> ' + val ) ;
nech encodeVal = encode_utf8 ( val ) ;
konzola. log ( 'Zakódovaná hodnota -> ' + encodeVal ) ;

V týchto riadkoch kódu vykonajte kroky uvedené nižšie:

  • Najprv definujte funkciu „ encode_utf8() ” ktorý zakóduje odovzdaný reťazec reprezentovaný zadaným parametrom.
  • Toto kódovanie sa vykonáva pomocou „ encodeURIComponent() ” metóda v definícii funkcie.
  • Poznámka: ' unescape() ” metóda nahradí akúkoľvek sekvenciu escape znakom, ktorý reprezentuje.
  • Potom inicializujte hodnotu, ktorá sa má zakódovať, a zobrazte ju.
  • Teraz vyvolajte definovanú funkciu a odovzdajte definovanú kombináciu znakov ako jej argumenty na zakódovanie tejto hodnoty do UTF-8.

Výkon

Tu sa dá naznačiť, že jednotlivé znaky sú podľa toho reprezentované a zakódované v UTF-8.

Príklad 2: Dekódovanie UTF-8 v JavaScripte
Nižšie uvedená ukážka kódu dekóduje odovzdanú hodnotu (vo forme znakov) do zakódovanej reprezentácie UTF-8:

funkciu decode_utf8 ( X ) {
vrátiť decodeURIComponent ( uniknúť ( X ) ) ;
}
nech val = 'à çè' ;
konzola. log ( 'Daná hodnota -> ' + val ) ;
nechať dekódovať = decode_utf8 ( val ) ;
konzola. log ( 'Dekódovaná hodnota -> ' + dekódovať ) ;

V tomto bloku kódu:

  • Podobne definujte funkciu „ decode_utf8() “, ktorý dekóduje odovzdanú kombináciu znakov cez „ decodeURIComponent() “.
  • Poznámka: ' uniknúť () ” metóda načíta nový reťazec, v ktorom sú rôzne znaky nahradené hexadecimálnymi sekvenciami escape.
  • Potom zadajte kombináciu znakov, ktoré sa majú dekódovať, a pristúpte k definovanej funkcii, aby sa dekódovanie vykonalo správne do UTF-8.

Výkon

Tu možno naznačiť, že kódovaná hodnota v predchádzajúcom príklade je dekódovaná na predvolenú hodnotu.

Prístup 2: Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou metód „encodeURI()“ a „decodeURI()“

' encodeURI() ” kóduje URI tak, že každý výskyt viacerých znakov nahradí určitým počtom únikových sekvencií reprezentujúcich kódovanie znaku UTF-8. V porovnaní s „ encodeURIComponent() “, táto konkrétna metóda kóduje obmedzené znaky.

' decodeURI() ” metóda však dekóduje URI (zakódované). Tieto metódy môžu byť implementované v kombinácii na kódovanie a dekódovanie kombinácie znakov v kódovanej hodnote UTF-8.

Syntax(metóda encodeURI())

encodeURI ( X )

Vo vyššie uvedenej syntaxi „ X ” zodpovedá hodnote, ktorá sa má zakódovať ako URI.

Návratová hodnota
Táto metóda získa zakódovanú hodnotu vo forme reťazca.

Syntax(metóda decodeURI())

decodeURI ( X )

Tu, ' X ” predstavuje zakódované URI, ktoré sa má dekódovať.

Návratová hodnota
Vracia dekódované URI ako reťazec.

Príklad 1: Kódovanie UTF-8 v JavaScripte
Táto ukážka zakóduje odovzdanú kombináciu znakov na zakódovanú hodnotu UTF-8:

funkciu encode_utf8 ( X ) {
vrátiť uniknúť ( encodeURI ( X ) ) ;
}
nech val = 'tu' ;
konzola. log ( 'Daná hodnota -> ' + val ) ;
nech encodeVal = encode_utf8 ( val ) ;
konzola. log ( 'Zakódovaná hodnota -> ' + encodeVal ) ;

Tu si pripomeňte prístupy na definovanie funkcie pridelenej na kódovanie. Teraz použite metódu „encodeURI()“ na reprezentáciu odovzdanej kombinácie znakov ako reťazec kódovaný UTF-8. Potom podobne definujte znaky, ktoré sa majú vyhodnotiť, a vyvolajte definovanú funkciu odovzdaním definovanej hodnoty ako jej argumentov na vykonanie kódovania.

Výkon

Tu je evidentné, že odovzdaná kombinácia znakov je úspešne zakódovaná.

Príklad 2: Dekódovanie UTF-8 v JavaScripte
Nižšie uvedená ukážka kódu dekóduje kódovanú hodnotu UTF-8 (v predchádzajúcom príklade):

funkciu decode_utf8 ( X ) {
vrátiť decodeURI ( uniknúť ( X ) ) ;
}
nech val = 'à çè' ;
konzola. log ( 'Daná hodnota -> ' + val ) ;
nechať dekódovať = decode_utf8 ( val ) ;
konzola. log ( 'Dekódovaná hodnota -> ' + dekódovať ) ;

Podľa tohto kódu deklarujte funkciu „ decode_utf8() “, ktorý obsahuje uvedený parameter, ktorý predstavuje kombináciu znakov, ktoré sa majú dekódovať pomocou „ decodeURI() “. Teraz zadajte hodnotu, ktorá sa má dekódovať, a vyvolaním definovanej funkcie aplikujte dekódovanie na „ UTF-8 “zastúpenie.

Výkon

Tento výsledok znamená, že sa podľa toho rozhodne o predtým zakódovanej hodnote.

Prístup 3: Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou regulárnych výrazov

Tento prístup aplikuje kódovanie tak, že viacbajtový reťazec unicode je zakódovaný do viacerých jednobajtových znakov UTF-8. Podobne sa dekódovanie vykonáva tak, že zakódovaný reťazec sa dekóduje späť na viacbajtové znaky Unicode.

Príklad 1: Kódovanie UTF-8 v JavaScripte
Nižšie uvedený kód kóduje viacbajtový reťazec unicode na jednobajtové znaky UTF-8:

funkciu kódovaťUTF8 ( val ) {
ak ( Typ val != 'reťazec' ) hodiť Nový TypeError ( 'Parameter' val 'nie je reťazec' ) ;
konšt string_utf8 = val. nahradiť (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 bajty 110yyyyy, 10zzzzzz
funkciu ( X ) {
bol von = X. charCodeAt ( 0 ) ;
vrátiť Reťazec . zCharCode ( 0xc0 | von >> 6 , 0x80 | von & 0x3f ) ; }
) . nahradiť (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 bajty 1110xxxx, 10yyyyyy, 10zzzzzz
funkciu ( X ) {
bol von = X. charCodeAt ( 0 ) ;
vrátiť Reťazec . zCharCode ( 0xe0 | von >> 12 , 0x80 | von >> 6 & 0x3F , 0x80 | von & 0x3f ) ; }
) ;
konzola. log ( 'Zakódovaná hodnota pomocou regulárneho výrazu -> ' + string_utf8 ) ;
}
kódovaťUTF8 ( 'tu' )

V tomto úryvku kódu:

  • Definujte funkciu ' encodeUTF8() “ obsahujúci parameter, ktorý predstavuje hodnotu, ktorá sa má zakódovať ako „ UTF-8 “.
  • Vo svojej definícii aplikujte kontrolu na odovzdanú hodnotu, ktorá nie je reťazcom, pomocou „ Typ ” a vráti zadanú vlastnú výnimku cez “ hodiť kľúčové slovo.
  • Potom použite „ charCodeAt() “ a „ fromCharCode() ” metódy na získanie Unicode prvého znaku v reťazci a transformáciu danej hodnoty Unicode na znaky, resp.
  • Nakoniec vyvolajte definovanú funkciu odovzdaním danej sekvencie znakov na zakódovanie tejto hodnoty ako „ UTF-8 “zastúpenie.

Výkon

Tento výstup znamená, že kódovanie je vykonané správne.

Príklad 2: Dekódovanie UTF-8 v JavaScripte
V tejto ukážke je postupnosť znakov dekódovaná na „ UTF-8 “ zastúpenie:

funkciu decodeUTF8 ( val ) {
ak ( Typ val != 'reťazec' ) hodiť Nový TypeError ( 'Parameter' val 'nie je reťazec' ) ;
konšt str = val. nahradiť (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funkciu ( X ) {
bol von = ( ( X. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( X. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( X. charCodeAt ( 2 ) & 0x3f ) ;
vrátiť Reťazec . zCharCode ( von ) ; }
) . nahradiť (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funkciu ( X ) {
bol von = ( X. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('à çè')

V tomto kóde:

  • Podobne definujte funkciu „ decodeUTF8() ” s parametrom, ktorý odkazuje na odovzdanú hodnotu, ktorá sa má dekódovať.
  • V definícii funkcie skontrolujte reťazcovú podmienku odovzdanej hodnoty cez „ Typ ” operátor.
  • Teraz použite „ charCodeAt() ” metóda na získanie Unicode prvého, druhého a tretieho reťazca znakov.
  • Tiež použite „ String.fromCharCode() ” na transformáciu hodnôt Unicode na znaky.
  • Podobne zopakujte tento postup znova, aby ste získali Unicode prvého a druhého reťazca znakov a transformovali tieto unicode hodnoty na znaky.
  • Nakoniec vstúpte do definovanej funkcie na vrátenie dekódovanej hodnoty UTF-8.

Výkon

Tu je možné overiť, či je dekódovanie vykonané správne.

Záver

Kódovanie/dekódovanie v reprezentácii UTF-8 je možné vykonať pomocou „ enodeURIComponent()” a “ decodeURIComponent() metódy, „ encodeURI() “ a „ decodeURI() “ alebo pomocou regulárnych výrazov.