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?
- Hvordan fungerer UTF-8-koding?
- Hvordan beregnes kodepunktverdiene?
- Hvordan kode/dekode UTF-8 i JavaScript?
- Kode/dekode UTF-8 i JavaScript ved å bruke metodene 'encodeURIComponent()' og 'decodeURIComponent()'.
- Kode/dekode UTF-8 i JavaScript ved å bruke metodene 'encodeURI()' og 'decodeURI()'.
- Kod/dekod UTF-8 i JavaScript ved å bruke regulære uttrykk.
- Konklusjon
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:
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:
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:
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):
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:
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:
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.