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?
- Ako funguje kódovanie UTF-8?
- Ako sa vypočítavajú bodové hodnoty kódu?
- Ako kódovať/dekódovať UTF-8 v JavaScripte?
- Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou metód „encodeURIComponent()“ a „decodeURIComponent()“.
- Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou metód „encodeURI()“ a „decodeURI()“.
- Kódovanie/dekódovanie UTF-8 v JavaScripte pomocou regulárnych výrazov.
- Záver
Č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:
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:
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:
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):
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:
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:
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.