Topik ini menjawab beberapa pertanyaan umum terkait encoding dalam EdgeRoutine (ER).
Metode encoding apa yang didukung oleh ER?
ER hanya mendukung encoding UTF-8.
Apakah ER memengaruhi transmisi data dalam mode pass-through?
Tidak. Dalam mode pass-through, ER tidak memproses badan permintaan. Data ditransmisikan sebagai aliran tanpa modifikasi pada badan permintaan, hanya header permintaan yang dimodifikasi. Aliran tersebut ditransmisikan langsung melalui jaringan tanpa melewati mesin virtual JavaScript.
Secara default, Fetch API mendekompresi aliran. Oleh karena itu, ER juga mendekompresi aliran. Untuk meneruskan data tanpa modifikasi, atur parameter decompress ke manual.
Apakah string JavaScript diencode dalam UTF-16?
Tidak. Encoding UTF-16 tidak kompatibel dengan ASCII dan menggunakan titik kode pengganti. Jika halaman web berisi titik kode yang diencode sebagai pasangan pengganti, kesalahan karakter dapat terjadi.
String.substring mengekstrak substring dari karakter yang direpresentasikan sebagai titik kode UTF-16. Pasangan pengganti mencakup dua jenis titik kode UTF-16. Jika pasangan pengganti terpisah dalam substring, substring tersebut akan diencode sebagai INVALID REPLACEMENT CHAR (65533) dalam UTF-8. Kode ini tidak akan ditampilkan di browser.
Bagaimana cara memodifikasi konten?
Anda dapat menggunakan kode berikut untuk menyangga data:
text/arrayBuffer/JSON ...Saat memproses aliran, periksa titik kode pengganti untuk memastikan pasangan pengganti tidak terpisah. Jika sebagian besar halaman web tidak berisi karakter dengan pasangan pengganti tetapi berisi emoji yang menggunakan pasangan pengganti, Anda dapat mengabaikan pertimbangan ini.
Alibaba Cloud akan segera meluncurkan parser HTML untuk membantu Anda memodifikasi kode HTML secara lebih efisien. Untuk informasi lebih lanjut, lihat pengumuman di situs internasional Alibaba Cloud.
Bagaimana cara mengencode ArrayBuffer dalam UTF-8 atau mendekode string yang diencode UTF-8 menjadi ArrayBuffer?
Gunakan TextEncoder atau TextDecoder untuk melakukan encoding atau decoding.