Kaip užkoduoti / iššifruoti UTF-8 JavaScript

Kaip Uzkoduoti Issifruoti Utf 8 Javascript



UTF-8 reiškia „ 8 bitų unikodo transformacijos formatas “ ir atitinka puikų kodavimo formatą, kuris užtikrina, kad simboliai būtų tinkamai rodomi visuose įrenginiuose, neatsižvelgiant į naudojamą kalbą / scenarijų. Be to, šis formatas yra naudingas tinklalapiams ir naudojamas tekstiniams duomenims internete saugoti, apdoroti ir perduoti.

Ši mokymo programa apima toliau nurodytas turinio sritis:







Kas yra UTF-8 kodavimas?

UTF-8 kodavimas “ – tai Unikodo simbolių sekos transformavimo į užkoduotą eilutę, susidedančią iš 8 bitų baitų, procedūra. Ši koduotė, palyginti su kitomis simbolių koduotėmis, gali atstovauti daugybei simbolių.



Kaip veikia UTF-8 kodavimas?

Pateikiant simbolius UTF-8, kiekvienas atskiras kodo taškas yra vaizduojamas vienu ar daugiau baitų. Toliau pateikiamas ASCII diapazono kodo taškų suskirstymas:



  • Vienas baitas reiškia kodo taškus ASCII diapazone (0–127).
  • Du baitai žymi kodo taškus ASCII diapazone (128-2047).
  • Trys baitai žymi kodo taškus ASCII diapazone (2048-65535).
  • Keturi baitai žymi kodo taškus ASCII diapazone (65536-1114111).

Tai yra taip, kad pirmasis „ UTF-8 “ seka vadinama „ lyderio baitas “, kuriame pateikiama informacija apie baitų skaičių sekoje ir simbolio kodo taško reikšmę.
Vieno, dviejų, trijų ir keturių baitų sekos „vadovaujantis baitas“ yra atitinkamai diapazone (0–127), (194–233), (224–239) ir (240–247).





Likę baitai iš eilės vadinami ' atsilieka “ baitų. Dviejų, trijų ir keturių baitų sekos baitai yra diapazone (128–191). Tai tokia, kad simbolio kodo taško reikšmę galima apskaičiuoti analizuojant pirmuosius ir galinius baitus.

Kaip apskaičiuojamos kodo taško reikšmės?

Kodo taškų reikšmės skirtingoms baitų sekoms apskaičiuojamos taip:



  • Dviejų baitų seka: Kodo taškas atitinka „((lb – 194) * 64) + (tb – 128)“.
  • Trijų baitų seka : kodo taškas atitinka „((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)“.
  • Keturių baitų seka : kodo taškas atitinka „((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)”.

Kaip užkoduoti / iššifruoti UTF-8 JavaScript?

UTF-8 kodavimas ir dekodavimas „JavaScript“ gali būti atliekamas naudojant toliau nurodytus metodus:

  • enodeURIComponent() “ ir „ decodeURIComponent() “ Metodai.
  • encodeURI() “ ir „ dekoduotiURI() “ Metodai.
  • Reguliarūs reiškiniai.

1 metodas: koduokite / iškoduokite UTF-8 programoje „JavaScript“, naudodami „encodeURIComponent()“ ir „decodeURIComponent()“ metodus

encodeURIComponent() “ metodas koduoja URI komponentą. Be to, jis gali užkoduoti specialiuosius simbolius, tokius kaip @, &, :, +, $, # ir kt. decodeURIComponent() “, tačiau iššifruoja URI komponentą. Šie metodai gali būti naudojami atitinkamai perduotoms reikšmėms koduoti ir dekoduoti į UTF-8.

Sintaksė (metodas „encodeURIComponent()“)

encodeURIComponent ( x )

Nurodytoje sintaksėje „ x “ nurodo URI, kurį reikia užkoduoti.

Grąžinimo vertė
Šis metodas nuskaito užkoduotą URI kaip eilutę.

Sintaksė („decodeURIComponent()“ metodas)

decodeURIComponent ( x )

Čia, ' x “ reiškia URI, kurį reikia iššifruoti.

Grąžinimo vertė
Šis metodas suteikia iššifruotą URI.

1 pavyzdys: UTF-8 kodavimas JavaScript
Šiame pavyzdyje perduota eilutė užkoduota į užkoduotą UTF-8 reikšmę, naudojant vartotojo apibrėžtą funkciją:

funkcija encode_utf8 ( x ) {
grąžinti pabėgti ( encodeURIComponent ( x ) ) ;
}
tegul val = 'čia' ;
konsolė. žurnalas ( 'Duota vertė ->' + val ) ;
tegul užkoduojaVal = encode_utf8 ( val ) ;
konsolė. žurnalas ( 'Koduota reikšmė -> ' + encodeVal ) ;

Šiose kodo eilutėse atlikite toliau nurodytus veiksmus.

  • Pirmiausia apibrėžkite funkciją ' encode_utf8() “, kuris koduoja perduotą eilutę, kurią atstovauja nurodytas parametras.
  • Šį kodavimą atlieka ' encodeURIComponent() “ metodas funkcijos apibrėžime.
  • Pastaba: pabėgti () “ metodas pakeičia bet kurią pabėgimo seką jos vaizduojamu simboliu.
  • Po to inicijuokite koduojamą reikšmę ir parodykite ją.
  • Dabar iškvieskite apibrėžtą funkciją ir nurodykite apibrėžtą simbolių derinį kaip argumentus, kad užkoduotumėte šią reikšmę į UTF-8.

Išvestis

Čia galima numanyti, kad atskiri simboliai atitinkamai pavaizduoti ir užkoduoti UTF-8.

2 pavyzdys: UTF-8 dekodavimas JavaScript
Toliau pateiktame kodo demonstracijoje perduota reikšmė (simbolių pavidalu) dekoduojama į užkoduotą UTF-8 atvaizdą:

funkcija decode_utf8 ( x ) {
grąžinti decodeURIComponent ( Pabegti ( x ) ) ;
}
tegul val = 'à çè' ;
konsolė. žurnalas ( 'Duota vertė ->' + val ) ;
leiskite dekoduoti = decode_utf8 ( val ) ;
konsolė. žurnalas ( 'Iškoduota reikšmė -> ' + dekoduoti ) ;

Šiame kodo bloke:

  • Taip pat apibrėžkite funkciją ' decode_utf8() “, kuris dekoduoja perduotą simbolių derinį per „ decodeURIComponent() “ metodas.
  • Pastaba: Pabegti() “ metodas nuskaito naują eilutę, kurioje įvairūs simboliai pakeičiami šešioliktainėmis pabėgimo sekomis.
  • Po to nurodykite dekoduojamų simbolių derinį ir pasiekite apibrėžtą funkciją, kad tinkamai atliktumėte dekodavimą į UTF-8.

Išvestis

Čia galima numanyti, kad užkoduota reikšmė ankstesniame pavyzdyje yra dekoduojama į numatytąją reikšmę.

2 metodas: užkoduokite / iškoduokite UTF-8 „JavaScript“, naudodami „encodeURI()“ ir „decodeURI()“ metodus

encodeURI() “ metodas koduoja URI, kiekvieną kelių simbolių egzempliorių pakeisdamas keletu pabėgimo sekų, atspindinčių simbolio UTF-8 kodavimą. Palyginti su „ encodeURIComponent() “ metodas, šis konkretus metodas koduoja ribotus simbolius.

dekoduotiURI() “, tačiau metodas iššifruoja URI (užkoduotą). Šiuos metodus galima įgyvendinti kartu, norint užkoduoti ir iššifruoti simbolių derinį UTF-8 užkoduotoje reikšmėje.

Sintaksės(encodeURI() metodas)

encodeURI ( x )

Aukščiau pateiktoje sintaksėje „ x “ atitinka reikšmę, kuri turi būti užkoduota kaip URI.

Grąžinimo vertė
Šis metodas nuskaito užkoduotą reikšmę eilutės pavidalu.

Sintaksės(decodeURI() metodas)

decodeURI ( x )

Čia, ' x “ reiškia užkoduotą URI, kurį reikia iššifruoti.

Grąžinimo vertė
Jis grąžina iššifruotą URI kaip eilutę.

1 pavyzdys: UTF-8 kodavimas JavaScript
Ši demonstracija užkoduoja perduotą simbolių kombinaciją į užkoduotą UTF-8 reikšmę:

funkcija encode_utf8 ( x ) {
grąžinti pabėgti ( encodeURI ( x ) ) ;
}
tegul val = 'čia' ;
konsolė. žurnalas ( 'Duota vertė ->' + val ) ;
tegul užkoduojaVal = encode_utf8 ( val ) ;
konsolė. žurnalas ( 'Koduota reikšmė -> ' + encodeVal ) ;

Čia prisiminkite būdus, kaip apibrėžti kodavimui skirtą funkciją. Dabar taikykite metodą „encodeURI()“, kad pateiktą simbolių derinį pateiktumėte kaip UTF-8 koduotą eilutę. Po to taip pat apibrėžkite vertinamus simbolius ir iškvieskite apibrėžtą funkciją, nurodydami apibrėžtą reikšmę kaip jos argumentus, kad atliktumėte kodavimą.

Išvestis

Čia akivaizdu, kad perduotas simbolių derinys užkoduotas sėkmingai.

2 pavyzdys: UTF-8 dekodavimas JavaScript
Toliau pateiktame kodo demonstracijoje iššifruojama užkoduota UTF-8 reikšmė (ankstesniame pavyzdyje):

funkcija decode_utf8 ( x ) {
grąžinti decodeURI ( Pabegti ( x ) ) ;
}
tegul val = 'à çè' ;
konsolė. žurnalas ( 'Duota vertė ->' + val ) ;
leiskite dekoduoti = decode_utf8 ( val ) ;
konsolė. žurnalas ( 'Iškoduota reikšmė -> ' + dekoduoti ) ;

Pagal šį kodą deklaruokite funkciją ' decode_utf8() “, kurį sudaro nurodytas parametras, nurodantis simbolių derinį, kuris turi būti dekoduojamas naudojant „ dekoduotiURI() “ metodas. Dabar nurodykite dekoduojamą reikšmę ir iškvieskite apibrėžtą funkciją, kad pritaikytumėte dekodavimą „ UTF-8 “ atstovavimas.

Išvestis

Šis rezultatas reiškia, kad anksčiau užkoduota vertė yra atitinkamai nuspręsta.

3 metodas: užkoduokite / iškoduokite UTF-8 „JavaScript“ naudodami reguliariąsias išraiškas

Šiuo metodu taikomas toks kodavimas, kad kelių baitų unikodo eilutė būtų užkoduota UTF-8 keliais vieno baito simboliais. Taip pat dekodavimas atliekamas taip, kad užkoduota eilutė būtų dekoduojama atgal į kelių baitų Unikodo simbolius.

1 pavyzdys: UTF-8 kodavimas JavaScript
Toliau pateiktas kodas koduoja kelių baitų unikodo eilutę iki UTF-8 vieno baito simbolių:

funkcija užkoduotiUTF8 ( val ) {
jeigu ( tipas val != 'styga' ) mesti naujas Tipo klaida ( 'Parametras' val 'nėra eilutė' ) ;
konst string_utf8 = val. pakeisti (
/[\u0080-\u07ff]/g , // U+0080 – U+07FF => 2 baitai 110yyyyy, 10zzzzzz
funkcija ( x ) {
buvo išeiti = x. charCodeAt ( 0 ) ;
grąžinti Styga . iš CharCode ( 0xc0 | išeiti >> 6 , 0x80 | išeiti & 0x3f ) ; }
) . pakeisti (
/[\u0800-\uffff]/g , // U+0800 – U+FFFF => 3 baitai 1110xxxx, 10yyyyyy, 10zzzzzz
funkcija ( x ) {
buvo išeiti = x. charCodeAt ( 0 ) ;
grąžinti Styga . iš CharCode ( 0xe0 | išeiti >> 12 , 0x80 | išeiti >> 6 & 0x3F , 0x80 | išeiti & 0x3f ) ; }
) ;
konsolė. žurnalas ( 'Koduota reikšmė naudojant reguliarųjį reiškinį ->' + string_utf8 ) ;
}
užkoduotiUTF8 ( 'čia' )

Šiame kodo fragmente:

  • Apibrėžkite funkciją ' koduotiUTF8() “, kurį sudaro parametras, nurodantis reikšmę, kuri turi būti užkoduota kaip “ UTF-8 “.
  • Jo apibrėžime patikrinkite gautą reikšmę, kuri nėra eilutė, naudodami „ tipas “ operatorių ir grąžinkite nurodytą tinkintą išimtį naudodami „ mesti “ raktinį žodį.
  • Po to pritaikykite „ charCodeAt() “ ir „ fromCharCode() “ metodus, kaip gauti pirmojo eilutės simbolio Unicode ir atitinkamai paversti pateiktą Unicode reikšmę simboliais.
  • Galiausiai iškvieskite apibrėžtą funkciją perduodant nurodytą simbolių seką, kad užkoduotumėte šią reikšmę kaip „ UTF-8 “ atstovavimas.

Išvestis

Ši išvestis reiškia, kad kodavimas atliktas tinkamai.

2 pavyzdys: UTF-8 dekodavimas JavaScript
Šioje demonstracijoje simbolių seka iššifruojama į „ UTF-8 “ atstovavimas:

funkcija dekoduotiUTF8 ( val ) {
jeigu ( tipas val != 'styga' ) mesti naujas Tipo klaida ( 'Parametras' val 'nėra eilutė' ) ;
konst g = val. pakeisti (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funkcija ( x ) {
buvo išeiti = ( ( x. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) & 0x3f ) ;
grąžinti Styga . iš CharCode ( išeiti ) ; }
) . pakeisti (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funkcija ( x ) {
buvo išeiti = ( x. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('à çè')

Šiame kode:

  • Panašiai apibrėžkite funkciją ' dekoduotiUTF8() “ turintis parametrą, nurodantį perduotą dekoduojamą reikšmę.
  • Funkcijos apibrėžime patikrinkite perduotos vertės eilutės sąlygą naudodami „ tipas ' operatorius.
  • Dabar pritaikykite „ charCodeAt() “ metodą, kad gautumėte atitinkamai pirmosios, antrosios ir trečiosios eilutės simbolių unikodą.
  • Taip pat taikykite „ String.fromCharCode() “ metodas Unikodo reikšmes paversti simboliais.
  • Taip pat pakartokite šią procedūrą dar kartą, kad gautumėte pirmosios ir antrosios eilutės simbolių unikodą ir pakeistumėte šias unikodo reikšmes į simbolius.
  • Galiausiai pasiekite apibrėžtą funkciją, kad grąžintumėte UTF-8 dekoduotą reikšmę.

Išvestis

Čia galima patikrinti, ar dekodavimas atliktas teisingai.

Išvada

Kodavimas / dekodavimas UTF-8 vaizde gali būti atliekamas naudojant ' enodeURIComponent()“ ir ' decodeURIComponent() metodai, „ encodeURI() “ ir „ dekoduotiURI() “ metodus arba naudojant reguliariąsias išraiškas.