URL hanya boleh berisi sekumpulan karakter ASCII yang terbatas, jadi karakter lainnya — spasi, aksen, emoji, atau pemisah khusus yang menyusun URL — harus dikodekan dalam persen. Alat ini mengkodekan dan mendekode representasi tersebut sepenuhnya di browser Anda. Panduan ini menjelaskan kapan harus menggunakan pengkodean komponen versus pengkodean URL lengkap, mengapa spasi kadang-kadang + dan kadang-kadang %20, dan cara membaca kesalahan dekode.
Kapan menggunakan encodeURIComponent vs encodeURI
Kedua fungsi tersebut hanya berbeda pada karakter mana yang dilindungi. mengkodekan Komponen URI lolos dari semuanya kecuali himpunan yang tidak dicadangkan (huruf, angka, dan - _ . ! ~ * ' ( )), jadi pemisah yang dicadangkan seperti / ? & = # diubah menjadi %2F %3F %26 %3D %23. Itulah yang Anda inginkan untuk satu bagian data — satu nilai kueri, satu segmen jalur — karena hal ini menjamin nilai tidak dapat salah dibaca sebagai struktur.
menyandikanURI dimaksudkan untuk seluruh URL. Ini membiarkan karakter khusus yang membatasi URL tidak tersentuh, sehingga https://x.com/a?b=c tetap dapat digunakan. Keuntungannya: tidak akan melindungi nilai yang berisi / atau &. Aturan praktisnya: enkode setiap nilai dengan mode komponen terlebih dahulu, lalu susun URL-nya; hanya gunakan mode URL lengkap bila Anda memiliki URL lengkap yang hanya berisi spasi atau aksen yang menyimpang.
Karakter yang dicadangkan dan kebingungan + vs %20
RFC 3986 menyebut karakter berikut sebagai karakter yang dicadangkan: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Di dalam data, karakter-karakter itu harus di-escape; sebagai pemisah, karakter tersebut tidak boleh di-escape. Sumber bug yang paling umum adalah spasi. Pengodean persen modern selalu merepresentasikan spasi sebagai %20. Namun, format lama application/x-www-form-urlencoded — yang dihasilkan browser saat mengirimkan formulir HTML — merepresentasikan spasi dalam string kueri sebagai +. Karena itu, ?q=a+b dan ?q=a%20b sama-sama dapat berarti "a b". Saat mendekode string bergaya formulir, aktifkan Anggap + sebagai spasi; saat mendekode jalur atau URL API modern, biarkan opsi itu mati agar tanda + literal tetap menjadi +.
Mengapa decoding gagal, dan double-encoding
Decoding memunculkan kesalahan URI malformed ketika % tidak diikuti oleh tepat dua digit hex (0–9 A–F). Tanda persen literal dalam teks sumber, seperti diskon 50%, adalah penyebab umum — ini seharusnya dikodekan sebagai %2520… bukan, sebagai diskon 50%25, dengan %25 adalah persentase yang lolos. Alat ini menunjuk pada posisi urutan buruk pertama sehingga Anda dapat menemukannya. Bahaya sebaliknya adalah pengkodean ganda: jika Anda mengkodekan string yang sudah berisi %XX, tanda persennya sendiri akan di-escape dan %20 menjadi %2520. Alat ini mendeteksi masukan yang sudah dikodekan dan memperingatkan Anda untuk melakukan dekode.
Privasi: setiap operasi di sini berjalan secara lokal dengan mengkodekan Komponen URI, menyandikanURI, decodeURIComponent, dan memecahkan kodeURI asli browser. Tidak ada apa pun yang Anda tempel — token, string kueri, data pribadi — yang dikirim ke server.