Panduan URL Encoding: Mengapa dan Bagaimana Mengenkode URL
Pernahkah Anda bertanya mengapa spasi di URL menjadi %20 dan ampersand menjadi %26? URL encoding (juga disebut percent-encoding) mengonversi karakter yang tidak aman untuk URL menjadi format yang dapat dipahami oleh server web.
Mengapa URL Encoding Penting
URL hanya dapat berisi kumpulan karakter ASCII yang terbatas. Karakter khusus, spasi, dan teks non-ASCII perlu dienkode agar dapat ditransmisikan dengan aman. Tanpa encoding, URL rusak dengan cara yang tidak terduga — spasi dapat memotong URL, ampersand dapat disalahartikan sebagai pemisah parameter.
Coba URL Encoder/Decoder kami untuk melihat bagaimana teks apa pun bertransformasi saat dienkode untuk URL.
Karakter Mana yang Perlu Dienkode?
Karakter Aman (tidak perlu encoding)
Huruf (A-Z, a-z), angka (0-9), dan simbol berikut: -, _, ., ~
Karakter Terpesan (enkode saat digunakan sebagai data)
| Karakter | Dienkode | Fungsi dalam URL |
|---|---|---|
: | %3A | Pemisah skema |
/ | %2F | Pemisah path |
? | %3F | Awal query string |
# | %23 | Pengenal fragmen |
& | %26 | Pemisah parameter |
= | %3D | Pemisah key-value |
+ | %2B | Sering mewakili spasi |
@ | %40 | Pemisah info pengguna |
% | %25 | Indikator encoding |
Selalu Dienkode
Spasi (%20), karakter non-ASCII (byte UTF-8 yang dienkode), dan karakter apa pun di luar set aman.
URL Encoding dalam Praktik
Parameter Query
Kasus penggunaan paling umum. Saat membangun URL pencarian atau permintaan API:
https://api.example.com/search?q=hello%20world&lang=en
Data Formulir
Formulir HTML dengan method="GET" secara otomatis melakukan URL-encode pada nilai field. Spasi menjadi + dalam form encoding (sedikit berbeda dari percent-encoding).
Segmen Path
Nama file dan pengenal sumber daya di path URL juga perlu dienkode. File bernama my report.pdf menjadi my%20report.pdf di URL.
Encoding di Berbagai Bahasa Pemrograman
JavaScript:
encodeURIComponent('hello world & more')
// "hello%20world%20%26%20more"
decodeURIComponent('hello%20world')
// "hello world"
Python:
from urllib.parse import quote, unquote
quote('hello world & more')
# 'hello%20world%20%26%20more'
Kesalahan Umum
- Double encoding — Mengenkode URL yang sudah dienkode mengubah
%20menjadi%2520 - Menggunakan
encodeURIalih-alihencodeURIComponent—encodeURImelewatkan karakter terpesan yang penting dalam nilai query - Tidak mengenkode tanda
+— Dalam URL,+dapat berarti spasi. Enkode tanda plus literal sebagai%2B - Melupakan non-ASCII — Karakter Unicode perlu encoding UTF-8 terlebih dahulu, kemudian percent-encoding
Pertanyaan yang Sering Diajukan
Apa perbedaan antara encodeURI dan encodeURIComponent?
encodeURI mengenkode URL lengkap, melewatkan karakter seperti :, /, ?, #. encodeURIComponent mengenkode semuanya kecuali karakter yang tidak terpesan — gunakan ini untuk nilai parameter query individual.
Mengapa spasi kadang menjadi + dan kadang %20?
Form encoding (application/x-www-form-urlencoded) menggunakan + untuk spasi. Percent-encoding standar menggunakan %20. Keduanya valid dalam konteks yang berbeda.
Sumber Terkait
- Base64 Encoding Explained — skema encoding penting lainnya
- JSON API Design Patterns — membangun API yang menangani encoding dengan benar
- URL Encoder/Decoder — enkode dan dekode URL secara instan
- Base64 Encoder — enkode data dalam format Base64