Cara Mengekod/Nyahkod UTF-8 dalam JavaScript

Cara Mengekod Nyahkod Utf 8 Dalam Javascript



UTF-8 bermaksud “ Format Transformasi Unikod 8-Bit ” dan sepadan dengan format pengekodan yang hebat yang memastikan bahawa aksara dipaparkan dengan sewajarnya pada semua peranti tanpa mengira bahasa/skrip yang digunakan. Juga, format ini membantu untuk halaman web dan digunakan untuk penyimpanan, pemprosesan dan penghantaran data teks di internet.

Tutorial ini merangkumi bidang kandungan yang dinyatakan di bawah:







Apakah Pengekodan UTF-8?

Pengekodan UTF-8 ” ialah prosedur menukar jujukan aksara Unikod kepada rentetan berkod yang terdiri daripada bait 8-bit. Pengekodan ini boleh mewakili julat besar aksara berbanding dengan pengekodan aksara yang lain.



Bagaimanakah Pengekodan UTF-8 Berfungsi?

Semasa mewakili aksara dalam UTF-8, setiap titik kod individu diwakili oleh satu atau lebih bait. Berikut ialah pecahan titik kod dalam julat ASCII:



  • Satu bait mewakili titik kod dalam julat ASCII (0-127).
  • Dua bait mewakili titik kod dalam julat ASCII (128-2047).
  • Tiga bait mewakili titik kod dalam julat ASCII (2048-65535).
  • Empat bait mewakili titik kod dalam julat ASCII(65536-1114111).

Oleh itu, bait pertama bagi ' UTF-8 ' turutan dirujuk sebagai ' bait ketua ” yang memberikan maklumat tentang bilangan bait dalam jujukan dan nilai titik kod aksara.
'bait ketua' untuk jujukan tunggal, dua, tiga dan empat bait adalah dalam julat (0-127), (194-233), (224-239) dan (240-247) masing-masing.





Baki selebihnya dalam urutan dipanggil ' mengekori ” bait. Bait untuk jujukan dua, tiga dan empat bait semuanya berada dalam julat (128-191). Oleh itu, nilai mata kod watak boleh dikira dengan menganalisis bait di hadapan dan di belakang.

Bagaimanakah Nilai Mata Kod Dikira?

Nilai mata kod untuk jujukan bait yang berbeza dikira seperti berikut:



  • Urutan dua bait: Titik kod adalah bersamaan dengan “((lb – 194) * 64) + (tb – 128)”.
  • Urutan Tiga bait : Titik kod bersamaan dengan “((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)”.
  • Urutan Empat-bait : Titik kod adalah bersamaan dengan “((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)”.

Bagaimana untuk Mengekod/Nyahkod UTF-8 dalam JavaScript?

Pengekodan dan penyahkodan UTF-8 dalam JavaScript boleh dijalankan melalui pendekatan yang dinyatakan di bawah:

  • enodeURIComponent() ” dan “ decodeURIComponent() ” Kaedah.
  • encodeURI() ” dan “ decodeURI() ” Kaedah.
  • Ungkapan Biasa.

Pendekatan 1: Encode/Decode UTF-8 dalam JavaScript Menggunakan Kaedah “encodeURIComponent()” dan “decodeURIComponent()”

' encodeURIComponent() ” kaedah mengekod komponen URI. Selain itu, ia boleh mengekod aksara khas seperti @, &, :, +, $, #, dll. “ decodeURIComponent() ” kaedah, bagaimanapun, menyahkod komponen URI. Kaedah ini boleh digunakan untuk mengekod dan menyahkod nilai yang diluluskan kepada UTF-8, masing-masing.

Sintaks(Kaedah 'encodeURIComponent()')

encodeURIComponent ( x )

Dalam sintaks yang diberikan, ' x ” menunjukkan URI untuk dikodkan.

Nilai Pulangan
Kaedah ini mendapatkan semula URI yang dikodkan sebagai rentetan.

Sintaks(Kaedah 'decodeURIComponent()')

decodeURIComponent ( x )

Di sini, ' x ” merujuk kepada URI untuk dinyahkod.

Nilai Pulangan
Kaedah ini memberikan URI yang dinyahkod.

Contoh 1: Pengekodan UTF-8 dalam JavaScript
Contoh ini mengekod rentetan yang diluluskan kepada nilai UTF-8 yang dikodkan dengan bantuan fungsi yang ditentukan pengguna:

fungsi encode_utf8 ( x ) {
kembali tidak melarikan diri ( encodeURIComponent ( x ) ) ;
}
biarkan val = 'sini' ;
konsol. log ( 'Nilai Diberi -> ' + val ) ;
biarkan encodeVal = encode_utf8 ( val ) ;
konsol. log ( 'Nilai Dikodkan -> ' + encodeVal ) ;

Dalam baris kod ini, lakukan langkah yang diberikan di bawah:

  • Pertama, tentukan fungsi ' encode_utf8() ” yang mengekod rentetan yang diluluskan yang diwakili oleh parameter yang ditentukan.
  • Pengekodan ini dilakukan oleh ' encodeURIComponent() ” kaedah dalam definisi fungsi.
  • Catatan: ' unescape() ” kaedah menggantikan mana-mana jujukan melarikan diri dengan aksara yang diwakili olehnya.
  • Selepas itu, mulakan nilai untuk dikodkan dan paparkannya.
  • Sekarang, gunakan fungsi yang ditakrifkan dan hantar gabungan aksara yang ditakrifkan sebagai hujahnya untuk mengekod nilai ini kepada UTF-8.

Pengeluaran

Di sini, boleh tersirat bahawa aksara individu diwakili dan dikodkan dalam UTF-8 dengan sewajarnya.

Contoh 2: Menyahkod UTF-8 dalam JavaScript
Demonstrasi kod di bawah menyahkod nilai yang diluluskan (dalam bentuk aksara) kepada perwakilan UTF-8 yang dikodkan:

fungsi decode_utf8 ( x ) {
kembali decodeURIComponent ( melarikan diri ( x ) ) ;
}
biarkan val = 'à çè' ;
konsol. log ( 'Nilai Diberi -> ' + val ) ;
biarkan decode = decode_utf8 ( val ) ;
konsol. log ( 'Nilai Dinyahkod -> ' + nyahkod ) ;

Dalam blok kod ini:

  • Begitu juga, tentukan fungsi ' decode_utf8() ” yang menyahkod gabungan aksara yang diluluskan melalui “ decodeURIComponent() ” kaedah.
  • Catatan: ' melarikan diri() ” kaedah mendapatkan semula rentetan baharu di mana pelbagai aksara digantikan dengan urutan pelarian heksadesimal.
  • Selepas itu, nyatakan gabungan aksara untuk dinyahkod dan akses fungsi yang ditentukan untuk melaksanakan penyahkodan kepada UTF-8 dengan sewajarnya.

Pengeluaran

Di sini, boleh tersirat bahawa nilai yang dikodkan dalam contoh sebelumnya dinyahkodkan kepada nilai lalai.

Pendekatan 2: Encode/Decode UTF-8 dalam JavaScript Menggunakan Kaedah “encodeURI()” dan “decodeURI()”

' encodeURI() ” kaedah mengekod URI dengan menggantikan setiap contoh berbilang aksara dengan beberapa jujukan melarikan diri yang mewakili pengekodan UTF-8 aksara. Berbanding dengan ' encodeURIComponent() ” kaedah, kaedah khusus ini mengekod aksara terhad.

' decodeURI() ” kaedah, bagaimanapun, menyahkod URI(dikodkan). Kaedah ini boleh dilaksanakan secara gabungan untuk mengekod dan menyahkod gabungan aksara dalam nilai yang dikodkan UTF-8.

Sintaks(encodeURI() Kaedah)

encodeURI ( x )

Dalam sintaks di atas, ' x ” sepadan dengan nilai yang akan dikodkan sebagai URI.

Nilai Pulangan
Kaedah ini mendapatkan semula nilai yang dikodkan dalam bentuk rentetan.

Sintaks(kaedah decodeURI())

decodeURI ( x )

Di sini, ' x ” mewakili URI yang dikodkan untuk dinyahkod.

Nilai Pulangan
Ia mengembalikan URI yang dinyahkod sebagai rentetan.

Contoh 1: Pengekodan UTF-8 dalam JavaScript
Demonstrasi ini mengekod gabungan aksara yang diluluskan kepada nilai UTF-8 yang dikodkan:

fungsi encode_utf8 ( x ) {
kembali tidak melarikan diri ( encodeURI ( x ) ) ;
}
biarkan val = 'sini' ;
konsol. log ( 'Nilai Diberi -> ' + val ) ;
biarkan encodeVal = encode_utf8 ( val ) ;
konsol. log ( 'Nilai Dikodkan -> ' + encodeVal ) ;

Di sini, ingat pendekatan untuk menentukan fungsi yang diperuntukkan untuk pengekodan. Sekarang, gunakan kaedah 'encodeURI()' untuk mewakili gabungan aksara yang diluluskan sebagai rentetan yang dikodkan UTF-8. Selepas itu, begitu juga, tentukan aksara yang akan dinilai dan gunakan fungsi yang ditentukan dengan menghantar nilai yang ditentukan sebagai hujahnya untuk melaksanakan pengekodan.

Pengeluaran

Di sini, adalah jelas bahawa gabungan aksara yang diluluskan berjaya dikodkan.

Contoh 2: Menyahkod UTF-8 dalam JavaScript
Demonstrasi kod di bawah menyahkod nilai UTF-8 yang dikodkan (dalam contoh sebelumnya):

fungsi decode_utf8 ( x ) {
kembali decodeURI ( melarikan diri ( x ) ) ;
}
biarkan val = 'à çè' ;
konsol. log ( 'Nilai Diberi -> ' + val ) ;
biarkan decode = decode_utf8 ( val ) ;
konsol. log ( 'Nilai Dinyahkod -> ' + nyahkod ) ;

Menurut kod ini, isytiharkan fungsi ' decode_utf8() ” yang terdiri daripada parameter yang dinyatakan yang mewakili gabungan aksara untuk dinyahkod menggunakan “ decodeURI() ” kaedah. Sekarang, tentukan nilai yang akan dinyahkodkan dan gunakan fungsi yang ditentukan untuk menggunakan penyahkodan pada ' UTF-8 ” perwakilan.

Pengeluaran

Hasil ini menunjukkan bahawa nilai yang dikodkan sebelum ini diputuskan dengan sewajarnya.

Pendekatan 3: Encode/Decode UTF-8 dalam JavaScript Menggunakan Ungkapan Biasa

Pendekatan ini menggunakan pengekodan supaya rentetan unikod berbilang bait dikodkan kepada aksara UTF-8 berbilang satu bait. Begitu juga, penyahkodan dijalankan supaya rentetan yang dikodkan dinyahkod kembali kepada aksara Unicode berbilang bait.

Contoh 1: Pengekodan UTF-8 dalam JavaScript
Kod di bawah mengekod rentetan unikod berbilang bait kepada aksara UTF-8 satu bait:

fungsi encodeUTF8 ( val ) {
jika ( jenis val != 'tali' ) melontar baru TypeError ( 'Parameter' val 'bukan rentetan' ) ;
const string_utf8 = val. menggantikan (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 bait 110yyyyy, 10zzzzzz
fungsi ( x ) {
adalah keluar = x. charCodeAt ( 0 ) ;
kembali Tali . daripadaCharCode ( 0xc0 | keluar >> 6 , 0x80 | keluar & 0x3f ) ; }
) . menggantikan (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 bait 1110xxxx, 10yyyyyy, 10zzzzzz
fungsi ( x ) {
adalah keluar = x. charCodeAt ( 0 ) ;
kembali Tali . daripadaCharCode ( 0xe0 | keluar >> 12 , 0x80 | keluar >> 6 & 0x3F , 0x80 | keluar & 0x3f ) ; }
) ;
konsol. log ( 'Nilai Dikodkan Menggunakan Ungkapan Biasa -> ' + string_utf8 ) ;
}
encodeUTF8 ( 'sini' )

Dalam coretan kod ini:

  • Tentukan fungsi “ encodeUTF8() ” yang terdiri daripada parameter yang mewakili nilai yang akan dikodkan sebagai “ UTF-8 ”.
  • Dalam definisinya, gunakan semakan pada nilai yang diluluskan yang bukan rentetan menggunakan ' jenis ” operator dan kembalikan pengecualian tersuai yang ditentukan melalui “ melontar ” kata kunci.
  • Selepas itu, gunakan ' charCodeAt() ” dan “ fromCharCode() ” kaedah untuk mendapatkan semula Unikod aksara pertama dalam rentetan dan mengubah nilai Unikod yang diberikan kepada aksara, masing-masing.
  • Akhir sekali, gunakan fungsi yang ditentukan dengan menghantar urutan aksara yang diberikan untuk mengekod nilai ini sebagai ' UTF-8 ” perwakilan.

Pengeluaran

Output ini menandakan bahawa pengekodan dijalankan dengan sewajarnya.

Contoh 2: Menyahkod UTF-8 dalam JavaScript
Dalam demonstrasi ini, urutan aksara dinyahkodkan kepada “ UTF-8 ” perwakilan:

fungsi nyahkodUTF8 ( val ) {
jika ( jenis val != 'tali' ) melontar baru TypeError ( 'Parameter' val 'bukan rentetan' ) ;
const str = val. menggantikan (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
fungsi ( x ) {
adalah keluar = ( ( x. charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( x. charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( x. charCodeAt ( 2 ) & 0x3f ) ;
kembali Tali . daripadaCharCode ( keluar ) ; }
) . menggantikan (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
fungsi ( x ) {
adalah keluar = ( x. charCodeAt ( 0 ) & 0x1f ) < '+str);
}
decodeUTF8('à çè')

Dalam kod ini:

  • Begitu juga, tentukan fungsi ' decodeUTF8() ” mempunyai parameter yang merujuk kepada nilai yang diluluskan untuk dinyahkod.
  • Dalam definisi fungsi, semak keadaan rentetan nilai yang diluluskan melalui ' jenis ” pengendali.
  • Sekarang, gunakan ' charCodeAt() ” kaedah untuk mendapatkan semula Unikod bagi aksara rentetan pertama, kedua dan ketiga, masing-masing.
  • Juga, gunakan ' String.fromCharCode() ” kaedah untuk menukar nilai Unicode kepada aksara.
  • Begitu juga, ulangi prosedur ini sekali lagi untuk mengambil Unicode bagi aksara rentetan pertama dan kedua dan menukar nilai unikod ini kepada aksara.
  • Akhir sekali, akses fungsi yang ditakrifkan untuk mengembalikan nilai yang dinyahkod UTF-8.

Pengeluaran

Di sini, ia boleh disahkan bahawa penyahkodan dilakukan dengan betul.

Kesimpulan

Pengekodan/penyahkodan dalam perwakilan UTF-8 boleh dilakukan melalui “ enodeURIComponent()” dan “ decodeURIComponent() kaedah, ' encodeURI() ” dan “ decodeURI() ” kaedah, atau menggunakan Ungkapan Biasa.