Apa Itu URL Encoding dan Mengapa Itu Penting?

25 Apr 2026 1,211 words

Apa Itu URL Encoding dan Mengapa Itu Penting?

URL encoding, juga dikenal sebagai percent encoding, mengonversi karakter menjadi format yang dapat ditransmisikan dengan aman dalam URL. Setiap kali Anda mengunjungi situs web, mengirimkan formulir, atau mengirim permintaan API, URL encoding bekerja di balik layar untuk memastikan bahwa karakter khusus dan teks non-ASCII ditransmisikan dengan benar. Tanpa URL encoding, tindakan sederhana seperti mencari "kopi & teh" akan merusak struktur URL, yang berpotensi menyebabkan kesalahan atau kerentanan keamanan.

Memahami Masalahnya

URL memiliki seperangkat karakter yang diizinkan terbatas seperti yang didefinisikan oleh RFC 3986. Karakter yang diizinkan terbagi dalam dua kategori:

  • Karakter yang dicadangkan (reserved): :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =
  • Karakter yang tidak dicadangkan (unreserved): A-Z, a-z, 0-9, -, ., _, ~

Karakter apa pun di luar set ini harus dienkode. Bahkan karakter yang dicadangkan harus dienkode jika digunakan dalam konteks di mana mereka biasanya memiliki arti khusus. Misalnya, karakter & dicadangkan untuk memisahkan parameter kueri. Jika Anda ingin menyertakan & literal dalam nilai parameter, ia harus dienkode sebagai %26.

Mengapa URL Encoding Penting

1. Menjaga Struktur URL

Karakter khusus seperti ?, &, dan # memiliki arti tertentu dalam URL. ? menandai awal string kueri, & memisahkan parameter kueri, dan # menunjukkan pengenal fragmen. Jika input pengguna mengandung salah satu karakter ini, mereka harus dienkode untuk mencegah URL salah diartikan.

Pertimbangkan kueri pencarian untuk "T&A session". Tanpa encoding, URL ini akan rusak:

https://example.com/search?q=T&A session

Browser menafsirkan A session sebagai parameter kueri kedua bernama A session alih-alih bagian dari istilah pencarian. Versi yang dienkode dengan benar mempertahankan makna yang dimaksud:

https://example.com/search?q=T%26A%20session

2. Menangani Karakter Khusus

Spasi tidak diizinkan dalam URL. Spasi harus dienkode sebagai %20 atau + (yang terakhir hanya dalam string kueri). Demikian pula, karakter seperti huruf beraksen (é, ü, ñ), simbol (£, ©, ®), dan aksara non-Latin (China, Arab, Sirilik) harus dienkode. URL encoding mengonversinya menjadi tanda persen diikuti dengan nilai byte UTF-8 mereka dalam heksadesimal.

3. Keamanan

URL encoding adalah langkah keamanan penting terhadap serangan injeksi. Penyerang dapat memanipulasi URL untuk menyuntikkan konten berbahaya, mengarahkan pengguna ke situs phishing, atau melakukan serangan cross-site scripting (XSS). Dengan mengenkode input pengguna sebelum memasukkannya ke dalam URL, Anda mencegah penyerang keluar dari struktur URL yang dimaksud. Misalnya, encoding mencegah penyerang menyuntikkan skema javascript: atau menambahkan parameter kueri yang tidak diharapkan.

4. Internasionalisasi (Dukungan IRI)

Web modern mendukung Internationalized Resource Identifiers (IRI), yang memungkinkan karakter non-ASCII dalam URL. Namun, IRI harus dikonversi ke URL ASCII yang dienkode sebelum transmisi. Proses ini, yang disebut Internationalizing Domain Names in Applications (IDNA), mengenkode nama domain menggunakan Punycode dan mengenkode sisa URL menggunakan percent encoding. Ini memastikan bahwa pengguna dapat mengetik URL dalam bahasa asli mereka sambil mempertahankan kompatibilitas dengan infrastruktur ASCII yang mendasarinya.

Cara Kerja URL Encoding

Karakter dienkode sebagai % diikuti oleh dua digit heksadesimal yang mewakili nilai byte karakter dalam UTF-8 (atau ASCII untuk karakter satu byte). Berikut adalah tabel encoding umum:

Karakter Hasil Encode Alasan
Spasi %20 Tidak diizinkan dalam URL
! %21 Karakter yang dicadangkan
" %22 Tidak diizinkan
# %23 Pengenal fragmen
$ %24 Dicadangkan
% %25 Karakter escape itu sendiri
& %26 Pemisah kueri
' %27 Dicadangkan
( %28 Dicadangkan
) %29 Dicadangkan
+ %2B Dicadangkan (spasi dalam kueri)
, %2C Dicadangkan
/ %2F Pemisah jalur
: %3A Dicadangkan
; %3B Dicadangkan
< %3C Tidak diizinkan
> %3E Tidak diizinkan
? %3F Awal kueri
@ %40 Dicadangkan
[ %5B Dicadangkan
] %5D Dicadangkan
~ %7E Sebenarnya diizinkan, tetapi kadang dienkode

Perhatikan bahwa tanda persen itu sendiri dienkode sebagai %25. Ini diperlukan karena % memperkenalkan karakter yang dienkode, sehingga tanda persen literal harus di-escape.

URL Encoding dalam Pemrograman

JavaScript

JavaScript menyediakan dua fungsi untuk URL encoding dengan tujuan yang berbeda:

// encodeURI: Encodes a complete URI, preserving characters that have special meaning
const url = encodeURI("https://example.com/search?q=hello world");
// Result: https://example.com/search?q=hello%20world
// Note: encodeURI does NOT encode &, ?, #, etc.

// encodeURIComponent: Encodes a URI component (query parameter value)
const query = encodeURIComponent("coffee & tea");
// Result: coffee%20%26%20tea
// This encodes all special characters, making it safe for parameter values

// Decoding
const decoded = decodeURIComponent("coffee%20%26%20tea");
// Result: coffee & tea

Perbedaan kritis: gunakan encodeURIComponent untuk input pengguna yang masuk ke parameter kueri, segmen jalur, atau pengenal fragmen. Gunakan encodeURI hanya ketika mengenkode seluruh URL yang sudah memiliki struktur yang tepat.

Python

Modul urllib.parse Python menyediakan fungsionalitas yang setara:

from urllib.parse import quote, unquote, urlencode

# Encode a single value
encoded = quote("coffee & tea", safe='')
# Result: coffee%20%26%20tea

# Encode query parameters
params = urlencode({'q': 'coffee & tea', 'page': 1})
# Result: q=coffee+%26+tea&page=1

# Decode
decoded = unquote("coffee%20%26%20tea")
// Result: coffee & tea

Bahasa Lainnya

  • PHP: urlencode() dan urldecode()
  • Ruby: URI.encode() dan URI.decode()
  • Java: URLEncoder.encode() dan URLDecoder.decode()
  • C#: HttpUtility.UrlEncode() dan HttpUtility.UrlDecode()

Semua bahasa pemrograman utama menyediakan fungsi URL encoding bawaan. Selalu gunakan fungsi pustaka ini alih-alih menulis sendiri, karena mereka menangani kasus tepi dengan benar.

Kesalahan Umum dan Cara Menghindarinya

Kesalahan 1: Mengenkode Seluruh URL

Menerapkan encodeURIComponent (atau yang setara) ke seluruh URL akan mengenkode karakter ://, ?, dan /, sehingga merusak struktur URL. Selalu enkode hanya komponen individual. Gunakan encodeURI untuk URL lengkap atau enkode setiap nilai parameter secara terpisah.

Kesalahan 2: Double Encoding

Double encoding terjadi ketika Anda mengenkode teks yang sudah dienkode. Misalnya, mengenkode %20 lagi menghasilkan %2520 (% menjadi %25). Ini sering terjadi ketika data melewati beberapa tahap pemrosesan. Untuk menghindarinya, tetapkan kebijakan encoding yang jelas: enkode sekali pada titik input pengguna dan dekode sekali pada titik penggunaan.

Kesalahan 3: Lupa Mengenkode Input Pengguna

Ini adalah kesalahan paling berbahaya. Setiap input pengguna yang muncul dalam URL harus dienkode, termasuk:

  • Parameter kueri pencarian
  • Nilai bidang formulir dalam permintaan GET
  • Segmen jalur URL yang berasal dari data pengguna
  • Pengenal fragmen

Gagal mengenkode input pengguna dapat menyebabkan fungsionalitas rusak, korupsi data, atau kerentanan keamanan.

Alat URL Encoder/Decoder

Alat URL Encoder/Decoder di Help2Code menyediakan cara mudah untuk mengenkode dan mendekode komponen URL. Tempel teks Anda, klik encode atau decode, dan dapatkan hasilnya secara instan. Ini berguna untuk debugging masalah URL, menyiapkan permintaan API, atau mempelajari cara kerja encoding dengan bereksperimen dengan berbagai input.

Kesimpulan

URL encoding adalah konsep fundamental dalam pengembangan web yang memastikan data ditransmisikan dengan aman dan benar melalui internet. Dengan memahami cara kerjanya dan kapan menggunakannya, Anda dapat membangun aplikasi web yang lebih kokoh dan aman. Selalu enkode input pengguna, gunakan fungsi encoding yang tepat untuk konteksnya, dan jangan pernah melakukan double encoding. Alat URL Encoder/Decoder adalah sumber daya yang berguna untuk menguji dan men-debug kebutuhan encoding Anda.


About this article

Pelajari apa itu URL encoding, mengapa penting untuk pengembangan web, dan cara menggunakannya dengan benar.


Related Articles


Related Tools

Help2Code Logo
Menu