Ringkas: pengodean URL (pengodean persen) mengganti karakter tak aman dengan urutan %XX agar tautan bertahan dari spasi, aksen, dan simbol. Spasi menjadi %20, ampersand menjadi %26. Kuncinya adalah tahu kapan mengodekan seluruh URL versus satu nilai kueri saja — dan bahwa encodeURIComponent dan encodeURI tak bisa dipertukarkan.

Sebuah URL hanya boleh memuat sekumpulan karakter terbatas dengan aman. Selebihnya — spasi, huruf beraksen, dan simbol khusus seperti ?, &, #, dan = — harus dikodekan dengan pengodean persen, atau tautannya rusak atau mengarah ke tempat tak terduga.

Penjelasan Encoding

Apa yang sebenarnya dilakukan pengodean persen

Setiap karakter tak aman diganti dengan tanda persen diikuti nilai bita heksadesimalnya. Spasi adalah %20, ampersand %26, tanda tanya %3F. Pendekodean membalik proses ini, mengembalikan tiap %XX valid ke karakter aslinya.

%20 versus + untuk spasi

Keduanya bisa berarti «spasi», tetapi tak di tempat yang sama. %20 adalah spasi percent-encoded yang dipakai di seluruh jalur dan kueri URL. Tanda plus + berarti spasi hanya dalam konteks application/x-www-form-urlencoded — pengiriman formulir dan string kueri — dan di tempat lain diperlakukan harfiah. Jika ragu, %20 adalah pilihan yang lebih aman dan universal.

encodeURIComponent versus encodeURI

Inilah perbedaan yang menjebak. Pakai encodeURIComponent untuk satu nilai yang dimasukkan ke URL — misalnya istilah pencarian di ?q=hello%20world. Ia mengodekan karakter khusus seperti & dan = agar tak dikira struktur URL. Pakai encodeURI hanya pada URL lengkap, di mana karakter khusus itu harus mempertahankan makna strukturalnya. Mengodekan URL utuh dengan encodeURIComponent akan merusak :// dan ?-nya sendiri; mengodekan satu parameter dengan encodeURI membiarkan karakter berbahaya tidak dikodekan.

Kapan mengodekan

  • Saat membangun string kueri dari input pengguna (istilah pencarian, filter, nama).
  • Saat menaruh tautan di dalam tautan lain sebagai parameter ?redirect= atau ?url=.
  • Saat menangani nama berkas atau jalur yang memuat spasi atau aksen.
  • Saat men-debug tautan yang jalan secara lokal tetapi rusak saat dibagikan.

Pengodean URL bukan Base64

Keduanya memecahkan masalah berbeda. Pengodean persen membuat karakter tak aman aman di dalam URL; Base64 mengodekan ulang data biner menjadi string ASCII ringkas, dan keluarannya masih perlu pengodean URL bila masuk ke tautan. Salah pilih menghasilkan tautan yang tampak terkode tetapi tak berfungsi.

Alur praktis

Tempel nilai mentah ke Encoder / Decoder URL untuk mengodekan parameter atau mendekode string %XX mencurigakan — ia mendekode urutan valid dan menandai yang tak valid alih-alih merusaknya diam-diam. Jika konten yang sama juga melewati Base64, periksa dengan Encoder / Decoder Base64 agar kedua langkah diterapkan dalam urutan benar.

Kesalahan umum yang harus dihindari

  • Mengodekan URL utuh dengan encodeURIComponent dan merusak strukturnya.
  • Menganggap + berarti spasi di mana pun dalam URL.
  • Pengodean ganda — melewatkan lagi string yang sudah terkode ke encoder.
  • Mengira pengodean persen sama dengan Base64.

Kodekan bagian-bagiannya, bukan keseluruhan, dan tautan berisi spasi, aksen, atau URL bersarang akan sampai utuh.