Apa yang dilakukan penyandian persen
URL hanya menerima sekumpulan karakter terbatas. Selebihnya diubah menjadi byte UTF-8 dan tiap byte ditulis sebagai tanda persen dan dua digit heksadesimal. Spasi menjadi %20, é menjadi %C3%A9, dan satu aksara Tiongkok, Jepang, atau Korea, yang tiga byte, menjadi sembilan karakter.
Alat ini membedakan penyandian seluruh alamat dari penyandian satu nilai saja. Pada alamat utuh, karakter struktural seperti garis miring dan tanda tanya harus selamat; pada satu nilai — misalnya kata kunci pencarian — karakter yang sama itu justru harus ikut disandikan atau parameternya akan terbelah.
Penguraian berjalan ke arah sebaliknya, mengembalikan tiap tiga karakter persen menjadi satu bita lalu membaca hasilnya sebagai UTF-8. Ia paling sering dipakai untuk memulihkan kata kunci pencarian asli dari alamat yang tercatat di berkas log atau perujuk.
Salah memilih cakupan penyandian
Menyandikan satu nilai seolah-olah ia alamat utuh memotong parameternya. Kalau kata kunci pencarian memuat tanda ampersand dan dibiarkan utuh, peladen membaca parameter baru mulai dari situ. Nilai kueri menuntut penyandian tingkat komponen.
Sebaliknya juga gagal: menyandikan alamat utuh pada tingkat komponen menuliskan ulang garis miring dan titik duanya, dan tautannya tidak lagi terbuka. Penyandian komponen tepat ketika sebuah URL jadi dibawa di dalam URL lain sebagai parameter, dan keliru ketika hasilnya langsung masuk ke bilah alamat.
Menyandikan untuk kedua kalinya teks yang sudah tersandi mengubah tiap tanda persen menjadi %25 dan menghasilkan lapisan ganda. Melihat beberapa kemunculan %25 pada keluarannya hampir selalu berarti hal itu terjadi, dan memulihkan aslinya lalu menuntut dua putaran penguraian.