Hvordan kode/dekode UTF-8 i JavaScript

Hvordan Kode Dekode Utf 8 I Javascript



UTF-8 står for ' Unicode-transformasjonsformat 8-bit ” og tilsvarer et flott kodingsformat som sikrer at tegnene vises riktig på alle enheter uavhengig av språk/skript som brukes. Dette formatet er også nyttig for nettsider og brukes til lagring, behandling og overføring av tekstdata på internett.

Denne opplæringen dekker innholdsområdene nedenfor:







Hva er UTF-8-koding?

' UTF-8-koding ” er prosedyren for å transformere sekvensen av Unicode-tegn til en kodet streng som består av 8-bits byte. Denne kodingen kan representere et stort utvalg av tegn sammenlignet med de andre tegnkodingene.



Hvordan fungerer UTF-8-koding?

Mens de representerer tegn i UTF-8, er hvert enkelt kodepunkt representert av en eller flere byte. Følgende er fordelingen av kodepunktene i ASCII-området:



  • En enkelt byte representerer kodepunktene i ASCII-området (0-127).
  • To byte representerer kodepunktene i ASCII-området (128-2047).
  • Tre byte representerer kodepunktene i ASCII-området (2048-65535).
  • Fire byte representerer kodepunktene i ASCII-området (65536-1114111).

Det er slik at den første byten av en ' UTF-8 '-sekvensen refereres til som ' lederbyte ” som gir informasjon om antall byte i sekvensen og tegnets kodepunktverdi.
'Lederbyte' for en enkelt-, to-, tre- og firebytesekvens er i henholdsvis området (0-127), (194-233), (224-239) og (240-247).





Resten av bytene i rekkefølge kalles ' etterfølgende ' bytes. Bytene for en to-, tre- og firebytesekvens er alle i området (128-191). Det er slik at karakterens kodepunktverdi kan beregnes ved å analysere de innledende og etterfølgende bytene.

Hvordan beregnes kodepunktverdiene?

Kodepunktverdiene for forskjellige bytesekvenser beregnes som følger:



  • To-byte sekvens: Kodepunktet tilsvarer '((lb – 194) * 64) + (tb – 128)'.
  • Tre-byte sekvens : Kodepunktet tilsvarer '((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)'.
  • Fire-byte sekvens : Kodepunktet tilsvarer '((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)'.

Hvordan kode/dekode UTF-8 i JavaScript?

Koding og dekoding av UTF-8 i JavaScript kan utføres via de nedenfor angitte tilnærmingene:

  • ' enodeURIConponent() ' og ' decodeURIConponent() ' Metoder.
  • ' kodeURI() ' og ' decodeURI() ' Metoder.
  • Vanlig uttrykk.

Tilnærming 1: Kode/dekode UTF-8 i JavaScript ved å bruke metodene 'encodeURIComponent()' og 'decodeURIComponent()'

« encodeURIConponent() ”-metoden koder for en URI-komponent. Den kan også kode spesialtegn som @, &, :, +, $, # osv. ' decodeURIConponent() ”-metoden dekoder imidlertid en URI-komponent. Disse metodene kan brukes til å kode og dekode de beståtte verdiene til henholdsvis UTF-8.

Syntaks(“encodeURIComponent()” Metode)

encodeURIConponent ( x )

I den gitte syntaksen, ' x ” indikerer URIen som skal kodes.

Returverdi
Denne metoden hentet en kodet URI som en streng.

Syntaks(“decodeURIComponent()” Metode)

decodeURIConponent ( x )

Her, ' x ” refererer til URIen som skal dekodes.

Returverdi
Denne metoden gir den dekodede URI.

Eksempel 1: Koding av UTF-8 i JavaScript
Dette eksemplet koder den beståtte strengen til en kodet UTF-8-verdi ved hjelp av en brukerdefinert funksjon:

funksjon kode_utf8 ( x ) {
komme tilbake unnslippe ( encodeURIConponent ( x ) ) ;
}
la val = 'her' ;
konsoll. Logg ( 'Giv verdi -> ' + val ) ;
la kodeVal = kode_utf8 ( val ) ;
konsoll. Logg ( 'Kodet verdi -> ' + kodeVal ) ;

I disse kodelinjene, utfør trinnene nedenfor:

  • Først definerer du funksjonen ' kode_utf8() ” som koder for den beståtte strengen representert av den spesifiserte parameteren.
  • Denne kodingen gjøres av ' encodeURIConponent() ”-metoden i funksjonsdefinisjonen.
  • Merk: « unescape() ”-metoden erstatter enhver escape-sekvens med tegnet representert av den.
  • Etter det initialiserer du verdien som skal kodes og viser den.
  • Nå påkaller du den definerte funksjonen og sender den definerte kombinasjonen av tegn som argumenter for å kode denne verdien til UTF-8.

Produksjon

Her kan det antydes at de enkelte tegnene er representert og kodet i UTF-8 tilsvarende.

Eksempel 2: Dekoding av UTF-8 i JavaScript
Kodedemonstrasjonen nedenfor dekoder den beståtte verdien (i form av tegn) til en kodet UTF-8-representasjon:

funksjon decode_utf8 ( x ) {
komme tilbake decodeURIConponent ( flukt ( x ) ) ;
}
la val = 'à çè' ;
konsoll. Logg ( 'Giv verdi -> ' + val ) ;
la dekode = decode_utf8 ( val ) ;
konsoll. Logg ( 'Dekodet verdi -> ' + dekode ) ;

I denne kodeblokken:

  • Definer også funksjonen ' decode_utf8() ' som dekoder den beståtte kombinasjonen av tegn via ' decodeURIConponent() 'metoden.
  • Merk: « flukt() ”-metoden henter en ny streng der ulike tegn erstattes av heksadesimale escape-sekvenser.
  • Etter det, spesifiser kombinasjonen av tegn som skal dekodes og få tilgang til den definerte funksjonen for å utføre dekodingen til UTF-8 på riktig måte.

Produksjon

Her kan det antydes at den kodede verdien i forrige eksempel er dekodet til standardverdien.

Tilnærming 2: Kode/dekode UTF-8 i JavaScript ved å bruke metodene 'encodeURI()' og 'decodeURI()'

« kodeURI() ”-metoden koder en URI ved å erstatte hver forekomst av flere tegn med et antall escape-sekvenser som representerer karakterens UTF-8-koding. Sammenlignet med ' encodeURIConponent() ”-metoden koder denne spesielle metoden for begrensede tegn.

« decodeURI() ”-metoden dekoder imidlertid URIen(kodet). Disse metodene kan implementeres i kombinasjon for å kode og dekode kombinasjonen av tegn i en UTF-8-kodet verdi.

Syntaks(encodeURI() Metode)

kodeURI ( x )

I syntaksen ovenfor, ' x ” tilsvarer verdien som skal kodes som en URI.

Returverdi
Denne metoden henter den kodede verdien i form av en streng.

Syntaks(decodeURI() Metode)

decodeURI ( x )

Her, ' x ” representerer den kodede URIen som skal dekodes.

Returverdi
Den returnerer den dekodede URI-en som en streng.

Eksempel 1: Koding av UTF-8 i JavaScript
Denne demonstrasjonen koder den beståtte kombinasjonen av tegn til en kodet UTF-8-verdi:

funksjon kode_utf8 ( x ) {
komme tilbake unnslippe ( kodeURI ( x ) ) ;
}
la val = 'her' ;
konsoll. Logg ( 'Giv verdi -> ' + val ) ;
la kodeVal = kode_utf8 ( val ) ;
konsoll. Logg ( 'Kodet verdi -> ' + kodeVal ) ;

Husk her fremgangsmåtene for å definere en funksjon som er tildelt for koding. Bruk nå 'encodeURI()'-metoden for å representere den beståtte kombinasjonen av tegn som en UTF-8-kodet streng. Deretter definerer du også tegnene som skal evalueres og påkaller den definerte funksjonen ved å sende den definerte verdien som argumentene for å utføre kodingen.

Produksjon

Her er det tydelig at den beståtte kombinasjonen av tegn er vellykket kodet.

Eksempel 2: Dekoding av UTF-8 i JavaScript
Kodedemonstrasjonen nedenfor dekoder den kodede UTF-8-verdien (i forrige eksempel):

funksjon decode_utf8 ( x ) {
komme tilbake decodeURI ( flukt ( x ) ) ;
}
la val = 'à çè' ;
konsoll. Logg ( 'Giv verdi -> ' + val ) ;
la dekode = decode_utf8 ( val ) ;
konsoll. Logg ( 'Dekodet verdi -> ' + dekode ) ;

I henhold til denne koden, erklær funksjonen ' decode_utf8() ' som omfatter den angitte parameteren som representerer kombinasjonen av tegn som skal dekodes ved hjelp av ' decodeURI() 'metoden. Spesifiser nå verdien som skal dekodes og påkall den definerte funksjonen for å bruke dekodingen på ' UTF-8 ' representasjon.

Produksjon

Dette resultatet innebærer at den kodede verdien tidligere er bestemt i samsvar med dette.

Tilnærming 3: Kod/dekod UTF-8 i JavaScript ved å bruke regulære uttrykk

Denne tilnærmingen bruker kodingen slik at multi-byte unicode-strengen er kodet til UTF-8 flere enkeltbyte-tegn. Likeledes utføres dekodingen slik at den kodede strengen dekodes tilbake til multi-byte Unicode-tegn.

Eksempel 1: Koding av UTF-8 i JavaScript
Koden nedenfor koder multi-byte unicode-strengen til UTF-8 enkeltbyte-tegn:

funksjon kode UTF8 ( val ) {
hvis ( type val != 'streng' ) kaste ny TypeError ( 'Parameteren' val 'er ikke en streng' ) ;
konst string_utf8 = val. erstatte (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 byte 110yyyyy, 10zzzzzz
funksjon ( x ) {
var ute = x. charCodeAt ( 0 ) ;
komme tilbake String . fra CharCode ( 0xc0 | ute >> 6 , 0x80 | ute & 0x3f ) ; }
) . erstatte (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 byte 1110xxxx, 10yyyyyy, 10zzzzzz
funksjon ( x ) {
var ute = x. charCodeAt ( 0 ) ;
komme tilbake String . fra CharCode ( 0xe0 | ute >> 12 , 0x80 | ute >> 6 & 0x3F , 0x80 | ute & 0x3f ) ; }
) ;
konsoll. Logg ( 'Kodet verdi ved bruk av regulært uttrykk -> ' + string_utf8 ) ;
}
kode UTF8 ( 'her' )

I denne kodebiten:

  • Definer funksjonen ' kodeUTF8() ' som omfatter parameteren som representerer verdien som skal kodes som ' UTF-8 '.
  • I sin definisjon, bruk en kontroll på den beståtte verdien som ikke er strengen ved å bruke ' typeOf '-operatør og returner det spesifiserte tilpassede unntaket via ' kaste ' nøkkelord.
  • Etter det bruker du ' charCodeAt() ' og ' fromCharCode() ” metoder for å hente Unicode til det første tegnet i strengen og transformere den gitte Unicode-verdien til henholdsvis tegn.
  • Til slutt, påkall den definerte funksjonen ved å sende den gitte sekvensen av tegn for å kode denne verdien som en ' UTF-8 ' representasjon.

Produksjon

Denne utgangen betyr at kodingen utføres riktig.

Eksempel 2: Dekoding av UTF-8 i JavaScript
I denne demonstrasjonen er sekvensen av tegn dekodet til ' UTF-8 representasjon:

funksjon dekodeUTF8 ( val ) {
hvis ( type val != 'streng' ) kaste ny TypeError ( 'Parameteren' val 'er ikke en streng' ) ;
konst str = val. erstatte (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
funksjon ( x ) {
var ute = ( ( x. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) & 0x3f ) ;
komme tilbake String . fra CharCode ( ute ) ; }
) . erstatte (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
funksjon ( x ) {
var ute = ( x. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('à çè')

I denne koden:

  • På samme måte, definer funksjonen ' decodeUTF8() har parameteren som refererer til den beståtte verdien som skal dekodes.
  • I funksjonsdefinisjonen, se etter strengbetingelsen til den beståtte verdien via ' typeOf ' operatør.
  • Bruk nå ' charCodeAt() ”-metoden for å hente Unicode av henholdsvis første, andre og tredje strengtegn.
  • Bruk også ' String.fromCharCode() ”-metoden for å transformere Unicode-verdiene til tegn.
  • På samme måte gjentar du denne prosedyren igjen for å hente Unicode for de første og andre strengtegnene og transformere disse unicode-verdiene til tegn.
  • Til slutt, få tilgang til den definerte funksjonen for å returnere den UTF-8-dekodede verdien.

Produksjon

Her kan det verifiseres at dekodingen er riktig utført.

Konklusjon

Kodingen/dekodingen i UTF-8-representasjon kan utføres via ' enodeURIConponent()' og ' decodeURIConponent() metoder, ' kodeURI() ' og ' decodeURI() ”-metoder, eller ved å bruke regulære uttrykk.