Kuidas kodeerida/dekodeerida UTF-8 JavaScriptis

Kuidas Kodeerida Dekodeerida Utf 8 Javascriptis



UTF-8 tähendab ' Unicode'i teisendusvorming 8-bitine ” ja vastab suurepärasele kodeerimisvormingule, mis tagab märkide õige kuvamise kõigis seadmetes, olenemata kasutatavast keelest/skriptist. Samuti on see vorming abistav veebilehtede jaoks ning seda kasutatakse tekstiandmete salvestamiseks, töötlemiseks ja edastamiseks Internetis.

See õpetus hõlmab alltoodud sisuvaldkondi.







Mis on UTF-8 kodeering?

UTF-8 kodeering ” on protseduur Unicode'i märkide jada teisendamiseks kodeeritud stringiks, mis sisaldab 8-bitisi baite. See kodeering võib teiste märgikodeeringutega võrreldes esindada suurt valikut märke.



Kuidas UTF-8 kodeering töötab?

UTF-8-s sümboleid esindades on iga üksiku koodipunkt esindatud ühe või mitme baidiga. Järgmine on ASCII-vahemiku koodipunktide jaotus:



  • Üks bait tähistab koodipunkte ASCII vahemikus (0–127).
  • Kaks baiti tähistavad koodipunkte ASCII vahemikus (128-2047).
  • Kolm baiti esindavad koodipunkte ASCII vahemikus (2048-65535).
  • Neli baiti esindavad koodipunkte ASCII vahemikus (65536-1114111).

See on selline, et esimene bait UTF-8 'järjestust nimetatakse ' juhtbait ”, mis annab teavet jada baitide arvu ja märgi koodipunkti väärtuse kohta.
Ühe-, kahe-, kolme- ja neljabaidise jada juhtbait on vastavalt vahemikus (0–127), (194–233), (224–239) ja (240–247).





Järjekorras olevaid ülejäänud baite nimetatakse ' järel ” baiti. Kahe-, kolme- ja neljabaidise jada baidid on kõik vahemikus (128–191). See on selline, et märgi koodipunkti väärtust saab arvutada, analüüsides algus- ja lõpubaite.

Kuidas koodipunktide väärtusi arvutatakse?

Erinevate baidijadade koodipunktide väärtused arvutatakse järgmiselt:



  • Kahebaidine jada: Koodipunkt on samaväärne '((lb – 194) * 64) + (tb – 128)'.
  • Kolmebaidine jada : koodipunkt on samaväärne väärtusega „((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)”.
  • Neljabaidine jada : koodipunkt on samaväärne väärtusega „((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)”.

Kuidas kodeerida/dekodeerida UTF-8 JavaScriptis?

UTF-8 kodeerimist ja dekodeerimist JavaScriptis saab läbi viia alltoodud lähenemisviiside abil:

  • enodeURIComponent() ” ja „ decodeURIComponent() ” Meetodid.
  • encodeURI() ” ja „ decodeURI() ” Meetodid.
  • Regulaaravaldised.

1. lähenemisviis: UTF-8 kodeerimine/dekodeerimine JavaScriptis, kasutades meetodeid „encodeURIComponent()” ja „decodeURIComponent()”

' encodeURIComponent() ” meetod kodeerib URI komponenti. Samuti saab see kodeerida erimärke, nagu @, &, :, +, $, # jne. decodeURIComponent() ” meetod aga dekodeerib URI komponendi. Neid meetodeid saab kasutada edastatud väärtuste kodeerimiseks ja dekodeerimiseks vastavalt UTF-8-le.

Süntaks (meetod 'encodeURIComponent()')

encodeURIComponent ( x )

Antud süntaksis ' x ” tähistab kodeeritavat URI-d.

Tagastusväärtus
See meetod tõi välja kodeeritud URI stringina.

Süntaks (meetod 'decodeURIComponent()')

decodeURIComponent ( x )

Siin, ' x ” viitab dekodeeritavale URI-le.

Tagastusväärtus
See meetod annab dekodeeritud URI.

Näide 1: UTF-8 kodeerimine JavaScriptis
See näide kodeerib edastatud stringi kodeeritud UTF-8 väärtuseks kasutaja määratud funktsiooni abil:

funktsiooni encode_utf8 ( x ) {
tagasi põgeneda ( encodeURIComponent ( x ) ) ;
}
las val = 'siin' ;
konsool. logi ( 'Antud väärtus ->' + val ) ;
lase kodeeridaVal = encode_utf8 ( val ) ;
konsool. logi ( 'Kodeeritud väärtus -> ' + kodeeri Val ) ;

Nendel koodiridadel tehke alltoodud samme.

  • Esiteks määrake funktsioon ' encode_utf8() ”, mis kodeerib määratud parameetriga esitatud edastatud stringi.
  • Selle kodeerimise teeb ' encodeURIComponent() ” meetod funktsiooni definitsioonis.
  • Märge: ' unescape () ” meetod asendab mis tahes paojärjestuse selle tähistatava märgiga.
  • Pärast seda lähtestage kodeeritav väärtus ja kuvage see.
  • Nüüd käivitage määratletud funktsioon ja edastage määratletud märgikombinatsioon selle argumentidena, et kodeerida see väärtus UTF-8-ga.

Väljund

Siin võib vihjata, et üksikud märgid on vastavalt UTF-8-s esindatud ja kodeeritud.

Näide 2: UTF-8 dekodeerimine JavaScriptis
Allolev koodiesitlus dekodeerib edastatud väärtuse (märkide kujul) kodeeritud UTF-8 esituseks:

funktsiooni decode_utf8 ( x ) {
tagasi decodeURIComponent ( põgeneda ( x ) ) ;
}
las val = 'çè' ;
konsool. logi ( 'Antud väärtus ->' + val ) ;
lase dekodeerida = decode_utf8 ( val ) ;
konsool. logi ( 'Dekodeeritud väärtus -> ' + dekodeerida ) ;

Selles koodiplokis:

  • Samuti määrake funktsioon ' decode_utf8() ', mis dekodeerib läbitud märgikombinatsiooni '' kaudu decodeURIComponent() ” meetod.
  • Märge: ' põgeneda () ” meetod hangib uue stringi, milles erinevad märgid asendatakse kuueteistkümnendsüsteemi paojärjestustega.
  • Pärast seda määrake dekodeeritavate märkide kombinatsioon ja avage määratletud funktsioon, et UTF-8-le sobivalt dekodeerida.

Väljund

Siin võib viidata sellele, et eelmises näites kodeeritud väärtus dekodeeritakse vaikeväärtuseks.

2. lähenemisviis: UTF-8 kodeerimine/dekodeerimine JavaScriptis, kasutades meetodeid „encodeURI()” ja „decodeURI()”

' encodeURI() ” kodeerib URI-d, asendades iga mitme märgi eksemplari mitme paojärjestusega, mis esindavad märgi UTF-8 kodeeringut. Võrreldes ' encodeURIComponent() ” meetod, see konkreetne meetod kodeerib piiratud tähemärke.

' decodeURI() ” meetod aga dekodeerib URI(kodeeritud). Neid meetodeid saab rakendada kombineeritult, et kodeerida ja dekodeerida UTF-8 kodeeritud väärtuses olevate tähemärkide kombinatsiooni.

Süntaks(encodeURI() meetod)

encodeURI ( x )

Ülaltoodud süntaksis ' x ” vastab URI-na kodeeritavale väärtusele.

Tagastusväärtus
See meetod hangib kodeeritud väärtuse stringi kujul.

Süntaks(decodeURI() meetod)

decodeURI ( x )

Siin, ' x ” tähistab dekodeeritavat kodeeritud URI-d.

Tagastusväärtus
See tagastab dekodeeritud URI stringina.

Näide 1: UTF-8 kodeerimine JavaScriptis
See esitlus kodeerib edastatud märgikombinatsiooni kodeeritud UTF-8 väärtuseks:

funktsiooni encode_utf8 ( x ) {
tagasi põgeneda ( encodeURI ( x ) ) ;
}
las val = 'siin' ;
konsool. logi ( 'Antud väärtus ->' + val ) ;
lase kodeeridaVal = encode_utf8 ( val ) ;
konsool. logi ( 'Kodeeritud väärtus -> ' + kodeeri Val ) ;

Siinkohal tuletage meelde lähenemisviise kodeerimiseks eraldatud funktsiooni määratlemiseks. Nüüd rakendage meetodit 'encodeURI()', et esitada edastatud tähemärkide kombinatsioon UTF-8 kodeeritud stringina. Pärast seda määrake samuti hinnatavad märgid ja käivitage määratletud funktsioon, edastades määratletud väärtuse kodeeringu teostamiseks selle argumentidena.

Väljund

Siin on ilmne, et läbitud märgikombinatsioon on edukalt kodeeritud.

Näide 2: UTF-8 dekodeerimine JavaScriptis
Alltoodud koodiesitlus dekodeerib kodeeritud UTF-8 väärtuse (eelmises näites):

funktsiooni decode_utf8 ( x ) {
tagasi decodeURI ( põgeneda ( x ) ) ;
}
las val = 'çè' ;
konsool. logi ( 'Antud väärtus ->' + val ) ;
lase dekodeerida = decode_utf8 ( val ) ;
konsool. logi ( 'Dekodeeritud väärtus -> ' + dekodeerida ) ;

Selle koodi järgi deklareerige funktsioon ' decode_utf8() ', mis sisaldab määratud parameetrit, mis esindab tähemärkide kombinatsiooni, mida dekodeerida kasutades ' decodeURI() ” meetod. Nüüd määrake dekodeeritav väärtus ja käivitage määratletud funktsioon, et rakendada dekodeerimine ' UTF-8 ” esindus.

Väljund

See tulemus tähendab, et eelnevalt kodeeritud väärtus otsustatakse vastavalt.

3. lähenemisviis: UTF-8 kodeerimine/dekodeerimine JavaScriptis regulaaravaldiste abil

See lähenemisviis rakendab kodeeringut nii, et mitmebaidine unicode string kodeeritakse UTF-8 mitme ühebaidise tähemärgiga. Samamoodi toimub dekodeerimine nii, et kodeeritud string dekodeeritakse tagasi mitmebaidilisteks Unicode'i tähemärkideks.

Näide 1: UTF-8 kodeerimine JavaScriptis
Allolev kood kodeerib mitmebaidise unicode-stringi UTF-8 ühebaidilisteks tähemärkideks:

funktsiooni kodeeridaUTF8 ( val ) {
kui ( tüüp val != 'string' ) viskama uus Tüübiviga ( 'Parameeter' val 'ei ole string' ) ;
konst string_utf8 = val. asendada (
/[\u0080-\u07ff]/g , // U+0080 – U+07FF => 2 baiti 110yyyyyy, 10zzzzzz
funktsiooni ( x ) {
oli välja = x. charCodeAt ( 0 ) ;
tagasi String . CharCode'ist ( 0xc0 | välja >> 6 , 0x80 | välja & 0x3f ) ; }
) . asendada (
/[\u0800-\uffff]/g , // U+0800 – U+FFFF => 3 baiti 1110xxxx, 10yyyyyy, 10zzzzzz
funktsiooni ( x ) {
oli välja = x. charCodeAt ( 0 ) ;
tagasi String . CharCode'ist ( 0xe0 | välja >> 12 , 0x80 | välja >> 6 & 0x3F , 0x80 | välja & 0x3f ) ; }
) ;
konsool. logi ( 'Kodeeritud väärtus regulaaravaldist kasutades ->' + string_utf8 ) ;
}
kodeeridaUTF8 ( 'siin' )

Selles koodilõigus:

  • Määratlege funktsioon ' kodeeri UTF8() ', mis sisaldab parameetrit, mis tähistab väärtust, mis tuleb kodeerida kui ' UTF-8 ”.
  • Selle määratluses kontrollige läbitud väärtust, mis ei ole string, kasutades ' tüüp ' operaator ja tagastage määratud kohandatud erand käsu '' kaudu viskama ” märksõna.
  • Pärast seda rakendage ' charCodeAt() ” ja „ fromCharCode() ” meetodid stringi esimese märgi Unicode'i hankimiseks ja antud Unicode'i väärtuse vastavalt tähemärkideks teisendamiseks.
  • Lõpuks käivitage määratletud funktsioon, edastades etteantud märgijada, et kodeerida see väärtus kui ' UTF-8 ” esindus.

Väljund

See väljund näitab, et kodeering on tehtud õigesti.

Näide 2: UTF-8 dekodeerimine JavaScriptis
Selles demonstratsioonis dekodeeritakse tähemärkide jada ' UTF-8 'esitus:

funktsiooni dekodeeridaUTF8 ( val ) {
kui ( tüüp val != 'string' ) viskama uus Tüübiviga ( 'Parameeter' val 'ei ole string' ) ;
konst str = val. asendada (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funktsiooni ( x ) {
oli välja = ( ( x. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) & 0x3f ) ;
tagasi String . CharCode'ist ( välja ) ; }
) . asendada (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funktsiooni ( x ) {
oli välja = ( x. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('çè')

Selles koodis:

  • Samamoodi määratlege funktsioon ' dekodeeridaUTF8() ”, millel on parameeter, mis viitab dekodeeritavale edastatud väärtusele.
  • Kontrollige funktsiooni definitsioonis edastatud väärtuse stringi tingimust ' tüüp ” operaator.
  • Nüüd rakendage ' charCodeAt() ” meetod, et hankida vastavalt esimese, teise ja kolmanda stringi tähemärgi Unicode.
  • Samuti rakendage ' String.fromCharCode() ” meetod Unicode'i väärtuste tähemärkideks muutmiseks.
  • Samamoodi korrake seda protseduuri uuesti, et hankida esimese ja teise stringi märgi Unicode ja muuta need unicode'i väärtused tähemärkideks.
  • Lõpuks avage UTF-8 dekodeeritud väärtuse tagastamiseks määratletud funktsioon.

Väljund

Siin saab kontrollida, kas dekodeerimine on õigesti tehtud.

Järeldus

UTF-8 esituses kodeerimist/dekodeerimist saab läbi viia ' enodeURIComponent()” ja ' decodeURIComponent() meetodid, ' encodeURI() ” ja „ decodeURI() ” meetodid või regulaaravaldiste kasutamine.