Pengkodean Persen URL: Mengapa URL Mengganti Spasi dengan %20 (Panduan RFC 3986)

URL dibatasi pada kumpulan karakter ASCII yang ketat. Karakter khusus — spasi, aksen, ampersand, garis miring — harus dikodekan sebagai urutan yang dikodekan dalam persen (misalnya, spasi = %20) agar dapat dikirim dengan aman melalui internet.

URL containing special characters being encoded to percent-encoded safe format

Mengapa URL Memerlukan Encoding Karakter Khusus

Comparison between RFC 3986 percent-20 and application-form-urlencoded plus encoding for spaces

URL dikirimkan melalui jaringan menggunakan protokol HTTP. Spesifikasi HTTP (dan pendahulunya, standar protokol internet) membatasi URL pada subkumpulan karakter US-ASCII — khususnya karakter dengan nilai byte antara 0x21 dan 0x7E.

Karakter di luar rentang ini — termasuk spasi, karakter beraksen (é, ñ, ü), karakter China/Jepang/Korea, dan banyak simbol — tidak aman di URL tanpa pengkodean.

Mengapa spasi secara khusus? HTTP menggunakan spasi sebagai pembatas antara metode, URL, dan versi protokol di baris permintaan:

GET /search?q=hello world HTTP/1.1

Server melihat "halo" sebagai akhir URL dan "dunia" sebagai bagian yang tidak valid dari string versi HTTP. URL-nya rusak.

Solusinya: Pengkodean persen (didefinisikan dalam RFC 3986) mengonversi karakter tidak aman menjadi notasi %XX yang aman dengan XX adalah nilai byte heksadesimal.


Cara Kerja Pengkodean Persen

JavaScript URL encoding API difference between encodeURI and encodeURIComponent functions

Hexadecimal ASCII byte lookup table for the eight most frequently encoded URL special characters

Setiap karakter dalam UTF-8 berukuran satu hingga empat byte. Pengkodean persen mengonversi setiap byte menjadi % diikuti oleh dua digit heksadesimal:

KarakterUTF-8 BytePersen-Encoded
Ruang0x20%20
#0x23%23
&0x26%26
=0x3D%3D
/0x2F%2F
é0xC3 0xB8 0xAD%E4%B8%AD

URL yang berisi karakter China seperti https://example.com/搜索 menjadi: https://example.com/%E6%90%9C%E7%B4%A2


Karakter yang Direservasi vs. Karakter yang Tidak Direservasi

Reserved versus unreserved URL character set comparison showing characters that must be percent-encoded

Karakter yang tidak direservasi (jangan pernah mengkodekannya): A-Z a-z 0-9 - _ . ~ Ini aman di semua konteks URL dan akan selalu muncul tanpa kode.

Karakter yang dicadangkan (dikodekan saat digunakan sebagai data, bukan sebagai pembatas): : / ? # [ ] @ ! $&' ( )*+ , ; = Karakter ini memiliki arti khusus dalam URL. Enkodekan data tersebut ketika muncul sebagai data literal dalam nilai parameter kueri.

Contoh — URL kueri penelusuran:

https://example.com/search?q=cats&dogs

Ini ambigu — apakah kuerinya "kucing" atau "kucing&anjing"? Dengan pengkodean:

https://example.com/search?q=cats%26dogs

Sekarang ampersand dikodekan sebagai data, bukan sebagai pemisah parameter kueri.


Pengkodean dan Dekode URL di ToolDolfen

ToolDolfen in-browser URL encoder and decoder client-side execution workflow

  1. Buka Enkoder & Dekoder URL (URL Encoder).
  2. Untuk mengkodekan: Tempelkan URL atau komponen URL yang berisi karakter khusus. Klik Enkode.
  3. Untuk mendekode: Tempelkan URL atau string yang dikodekan persen untuk melihat dokumen asli yang dapat dibaca manusia.

Alat ini menangani URL lengkap dan komponen URL (nilai parameter kueri individual). Untuk pengkodean URL lengkap, hanya karakter yang tidak dicadangkan yang dikodekan; untuk pengkodean komponen, karakter khusus juga dikodekan.

Panduan Pendamping yang Direkomendasikan

Jelajahi tutorial dan utilitas pelengkap dari cluster topik ini untuk menyempurnakan alur kerja digital Anda:

HEX, RGB, dan HSL: Panduan Model Warna Lengkap untuk CSS dan DesainTutorial praktis langkah demi langkah dengan standar terverifikasi dan dalam browser alur kerja.Matematika Kata Sandi yang Kuat: Entropi, Pedoman NIST, dan Panjang Kata SandiTutorial praktis langkah demi langkah dengan standar terverifikasi dan dalam browser alur kerja.Panduan Konverter Penurunan Harga ke HTML: Tabel GFM, Matematika & Gotcha Dunia NyataTutorial langkah demi langkah praktis dengan standar terverifikasi dan dalam browser alur kerja.Cara Memisahkan File PDF dan Mengekstrak Rentang Halaman TertentuAlur kerja lintas format pelengkap yang menghubungkan data dan media terkait alat.
Utilitas yang Direkomendasikan: Encoder/Decoder URLJalankan alur kerja ini secara langsung di browser Anda tanpa unggahan server dan 100% privasi sisi klien.
Enkoder & Dekoder URL (URL Encoder)
Enkoder & Dekoder URL (URL Encoder)

Pertanyaan yang Sering Diajukan

Temukan jawaban cepat dan terverifikasi untuk pertanyaan umum tentang alur kerja ini.

Apa perbedaan antara %20 dan + untuk spasi di URL?

%20 adalah pengkodean persen standar RFC 3986 untuk spasi di URL. Tanda + adalah konvensi pengkodean formulir HTML lama (application/x-www-form-urlencoded) untuk spasi dalam parameter kueri. Meskipun + didukung secara luas dalam string kueri, %20 lebih benar secara universal dan direkomendasikan untuk jalur URL.

Apakah ada karakter yang tidak boleh dikodekan dalam URL?

Ya. Karakter yang tidak dicadangkan (A-Z, a-z, 0-9, -, _, ., ~) tidak boleh dikodekan — karakter tersebut aman di semua konteks URL. Karakter yang dicadangkan (/, ?, #, &, =, @, !, $) tidak boleh dikodekan saat menjalankan peran fungsionalnya (misalnya, / memisahkan segmen jalur).

Mengapa URL saya memberikan kesalahan 404 ketika saya menempelkannya dengan karakter khusus?

Banyak server web menolak URL yang berisi karakter khusus yang tidak dikodekan. Jika URL Anda berisi spasi, tanda kurung siku, kurung kurawal, atau karakter non-ASCII (huruf beraksen, karakter CJK), enkodekan terlebih dahulu menggunakan URL Encoder.

Bilal Ahmad