tools / escape
escape/
Escape dan unescape entitas HTML, Unicode \uXXXX, dan string JS.
Teks asli
Hasil escape
Pertanyaan umum
Apa bedanya escape entitas HTML, Unicode, dan string JS?
Ketiganya adalah notasi yang berbeda, jadi pilih yang sesuai dengan tujuan teksnya. Entitas HTML ditulis seperti & dan < dan dipakai agar teks aman ditaruh di halaman web; escape Unicode berupa code point seperti \u4f60, umum di JSON dan log; escape string JS menangani tanda kutip, backslash, dan baris baru agar teks bisa ditaruh di dalam kode JavaScript.
Karakter apa saja yang diubah oleh escape HTML, dan apakah teks Mandarin ikut berubah?
Hanya 5 karakter: & menjadi &, < menjadi <, > menjadi >, tanda kutip ganda menjadi ", dan tanda kutip tunggal menjadi '. Teks Mandarin, spasi, baris baru, dan karakter lain tidak diubah, dan tidak ada yang berubah menjadi bentuk seperti 中. Untuk teks isi HTML atau nilai atribut yang diberi tanda kutip, kelima karakter inilah yang perlu di-escape.
Mengapa sebagian entitas &xxx; tidak berubah setelah unescape HTML?
Entitas bernama yang tidak dikenali dibiarkan apa adanya, tanpa error. Alat ini punya sekumpulan entitas umum bawaan (huruf Latin dan Yunani, tanda baca, mata uang, panah, simbol matematika, dan sebagainya); namanya peka huruf besar/kecil dan titik koma di akhir wajib ada. Untuk nama yang tidak ada di bawaan, tulis sebagai entitas numerik seperti 中 atau 中 maka entitas itu akan didekode. Entitas numerik dengan code point 0, di atas 10FFFF, atau di rentang surrogate akan menjadi karakter pengganti �.
Bagaimana cara kerja escape Unicode, dan mengapa emoji menjadi dua bagian \u?
Escape Unicode hanya memproses karakter non-ASCII; huruf Latin, angka, dan simbol tetap seperti semula, jadi "你好 abc" menjadi \u4f60\u597d abc, dengan digit heksadesimal huruf kecil. Karakter di luar BMP seperti emoji dipecah menjadi surrogate pair seperti cara JavaScript, sehingga ditulis dua bagian seperti \ud83d\ude00. Saat unescape, bentuk \uXXXX maupun \u{…} dikenali, surrogate pair yang berdampingan digabung kembali menjadi satu karakter, dan \u yang formatnya salah dibiarkan apa adanya tanpa error.
Bisakah hasil escape string JS langsung ditempel ke kode?
Bisa, cukup apit dengan tanda kutip; kutip tunggal maupun ganda sama-sama bisa karena keduanya sudah di-escape. Backslash, baris baru, dan tab menjadi \\ \n \t, karakter kontrol lain ditulis sebagai \xHH, dan teks Mandarin tidak di-escape. Backtick dan ${ tidak di-escape, jadi jika teks akan dimasukkan ke template literal, Anda perlu menanganinya sendiri.
Apa arti pesan "Unescape gagal: Karakter ke-N: ..."?
Artinya backslash di posisi itu diikuti sesuatu yang tidak valid. Pada mode string JS, \x harus diikuti dua digit heksadesimal, \u diikuti empat digit heksadesimal (atau 1 sampai 6 digit di dalam \u{…}), escape oktal seperti \1 sampai \7 tidak didukung, dan satu backslash di paling akhir juga menimbulkan error. Penyebab yang umum adalah path Windows yang ditempel: pada C:\users, \u bukan escape yang valid. Backslash di dalam path memang tidak perlu di-unescape sejak awal.
Apakah hasil escape bisa dipakai sebagai string JSON?
Unescape bisa, escape tidak. Urutan seperti \n, \", \/, dan \uXXXX di dalam string JSON bisa dikembalikan ke teks asli dengan unescape "String JS". Namun arah escape menulis tanda kutip tunggal sebagai \' dan karakter kontrol sebagai \xHH, dan JSON tidak menerima keduanya; untuk menghasilkan string JSON yang valid, gunakan JSON.stringify.
Apakah teks saya diunggah, dan amankah menempelkan konten dari sumber yang tidak dikenal?
Tidak ada yang diunggah: escape dan unescape berjalan di browser Anda, dan tidak ada batas jumlah karakter; jika input lebih dari satu juta karakter, halaman menunggu sampai Anda berhenti mengetik selama 0.5 detik sebelum menghitung ulang. Unescape HTML dan JS di-parse bagian demi bagian oleh alat ini sendiri, tanpa DOM halaman dan tanpa eval, sehingga menempelkan sesuatu seperti <script> hanya menghasilkan teks dan tidak pernah dijalankan.