URL Encode dan Decode
URL encoding mengganti karakter yang tidak aman dengan tanda persen dan dua digit heksadesimal. Spasi menjadi %20, dan "a&b" menjadi a%26b. Decode caf%C3%A9 menghasilkan café.
Cara memakai
- Pilih Encode atau Decode, lalu ketik atau tempel teks ke kotak input.
- Pilih Komponen untuk meng-encode satu nilai, misalnya kata kunci pencarian. Pilih URL penuh untuk meng-encode seluruh alamat dan membiarkan karakter seperti : / ? & = # apa adanya.
- Centang opsi plus kalau teksnya memakai + sebagai spasi, seperti form HTML. Hasil berubah selagi Anda mengetik.
- Kalau input berupa URL atau query string, tabel di bawah hasil menampilkan setiap parameter dengan key dan value yang sudah di-decode. Tekan Salin untuk menyalin output, atau Jadikan input untuk membalik hasil ke arah sebaliknya.
Cara menghitung
Percent encoding mengubah setiap karakter yang tidak aman menjadi byte UTF-8, lalu menulis tiap byte sebagai tanda persen diikuti dua digit heksadesimal. Huruf é adalah dua byte C3 A9, jadi menjadi %C3%A9. Emoji memakai empat byte, jadi menjadi empat kelompok %XX.
Mode Komponen memakai encodeURIComponent. Hanya huruf, angka, dan - _ . ! ~ * ' ( ) yang dibiarkan, sisanya di-escape, termasuk / ? & = : dan #. Pakai untuk satu nilai di dalam URL. Mode URL penuh memakai encodeURI, yang juga membiarkan karakter pembentuk struktur URL (; , / ? : @ & = + $ #), jadi cocok untuk alamat utuh.
Decode adalah kebalikannya. Kalau ada % yang tidak diikuti dua digit heksadesimal, atau byte-nya bukan UTF-8 yang valid, browser menolak decode dan alat ini menampilkan error. Di tabel query bagian itu tetap ditulis apa adanya dan ditandai merah, jadi satu nilai rusak tidak menyembunyikan yang lain.
Tanda plus berarti spasi hanya di data form (application/x-www-form-urlencoded) dan sebagian besar query string. Di path, + adalah tanda plus biasa. Tabel query selalu membaca + sebagai spasi, sedangkan decoder utama hanya melakukannya kalau opsinya dicentang.
Karakter yang sering di-encode
| Karakter | Hasil encode | Catatan |
|---|---|---|
| Spasi | %20 (atau +) | + hanya di query string |
| & | %26 | Pemisah parameter, jadi encode di dalam nilai |
| = | %3D | Pemisah key dan value |
| ? | %3F | Awal query string |
| # | %23 | Awal fragment |
| / | %2F | Pemisah path |
| % | %25 | Karakter escape itu sendiri |
| + | %2B | Tanda plus asli harus di-encode |
Pertanyaan umum
Apa beda encodeURI dan encodeURIComponent?
encodeURIComponent meng-escape karakter pemisah bagian URL (/ ? & = : #), jadi aman untuk satu nilai. encodeURI membiarkannya, jadi bisa meng-encode alamat lengkap tanpa merusak strukturnya.
Kenapa spasi jadi %20 atau tanda plus?
%20 adalah encoding standar untuk spasi dan berlaku di mana saja. Tanda plus adalah cara lama dari form dan hanya sah di query string. Opsi plus menulis + alih-alih %20 saat encode.
Kenapa decode gagal dengan error malformed?
Teksnya berisi % yang berdiri sendiri, % yang diikuti karakter bukan heksadesimal, atau byte yang bukan UTF-8 valid seperti %C3 sendirian. Perbaiki atau hapus bagian yang rusak. Tabel query tetap menampilkan parameter lainnya.
Apakah bisa untuk teks non-Latin dan emoji?
Bisa. Teks diubah ke UTF-8 dulu, jadi bahasa apa pun dan emoji kembali utuh setelah encode lalu decode.
Apakah URL saya dikirim ke server?
Tidak. Semua berjalan di browser. Link yang berisi token atau data pribadi tidak keluar dari perangkat Anda.