Pengodean persen di URL: arti %20, + dan %2F yang sebenarnya
Pengodean persen (percent-encoding) menulis karakter yang tidak aman dibawa URL sebagai tanda persen diikuti nilai byte-nya dalam heksadesimal. Spasi menjadi %20, tanda ampersand menjadi %26, dan garis miring menjadi %2F. Pengodean ini melindungi struktur link, karena karakter seperti & dan = memisahkan bagian-bagian dari query string.
Karakter mana yang boleh dibiarkan apa adanya
Standar URI (RFC 3986), yang menjadi dasar URL, membiarkan sebagian karakter tetap: huruf A sampai Z dan a sampai z, angka, serta empat tanda - _ . ~. Karakter-karakter ini tidak pernah perlu dikodekan. Karakter lain punya fungsi dalam URL. Titik dua memisahkan skema dari bagian lainnya, garis miring memisahkan bagian path, tanda tanya memulai query, tanda pagar memulai fragmen, dan & serta = membagi query menjadi nama dan nilai. Karakter yang punya fungsi harus dikodekan jika Anda memaksudkannya sebagai data, bukan sebagai struktur.
Itulah sebabnya karakter yang sama bisa dikodekan di satu tempat tetapi tidak di tempat lain. Di dalam nilai query, tanda ampersand harus berupa %26, kalau tidak link akan terpotong di tempat yang keliru. Di path link, ia hanya karakter biasa.
Huruf non-Inggris
Huruf di luar alfabet Inggris dasar dikodekan sebagai byte UTF-8, dan setiap byte ditulis sebagai kode persen. Huruf é pada kata café terdiri dari dua byte, C3 dan A9, sehingga menjadi %C3%A9, dan seluruh kata menjadi caf%C3%A9.
Contoh sederhana membuat aturannya lebih jelas. Teks a b&c=d/é, jika dikodekan sebagai komponen, menjadi a%20b%26c%3Dd%2F%C3%A9. Setiap karakter yang bukan huruf, angka, atau tanda aman ikut dikodekan: spasi, ampersand, tanda sama dengan, garis miring, dan huruf beraksen.
Komponen atau seluruh URL
Ada dua jenis pengodean dan masing-masing punya alasan. Pengodean komponen memperlakukan setiap karakter cadangan sebagai data. Gunakan ini untuk satu nilai, misalnya kata kunci pencarian atau nama file di dalam link. Jika "rock & roll" dikodekan sebagai kata kunci pencarian, hasilnya rock%20%26%20roll, sehingga ampersand tetap berada di dalam nilai.
Pengodean seluruh URL menjaga struktur. Jika https://example.com/a b dikodekan, hasilnya https://example.com/a%20b, dengan garis miring dan titik dua dibiarkan. Gunakan ini untuk alamat lengkap yang perlu dibuat valid, bukan untuk nilai yang diletakkan di dalam link.
Alat URL punya pengaturan Component dan Full URL untuk keperluan ini. Dekode Full URL juga mempertahankan karakter struktur yang sudah dikodekan, seperti %26 dan %3D, sehingga link tetap berfungsi setelah didekode.
Tanda plus dan data formulir
Formulir web memakai konvensi yang berbeda. Ketika formulir dikirim sebagai data formulir, spasi ditulis sebagai +, bukan %20. Tanda plus yang memang ingin ditampilkan ditulis sebagai %2B. Jadi frasa C++ tips menjadi C%2B%2B+tips dalam data formulir, dan C%2B%2B%20tips dalam pengodean komponen biasa.
Dekodenya juga berbeda. Dalam query string, + biasanya berarti spasi. Di path link, + adalah tanda plus. Alat ini membaca + sebagai spasi hanya jika Use + for spaces (form data) dicentang, jadi biarkan tidak dicentang untuk path dan untuk nilai yang memang berisi tanda plus.
Membaca query string yang panjang
Link sering membawa pengaturannya setelah tanda tanya. Contohnya:
https://shop.example/search?q=red%20shirt&size=M&tag=summer%2Bsale
Setelah didekode, artinya pencarian untuk red shirt, ukurannya M, dan tag-nya summer+sale. %2B tetap menjadi tanda plus karena memang sudah dikodekan. Tempel link ke alat URL dan alat ini akan menampilkan setiap nama dan nilai setelah didekode, sehingga link yang panjang mudah dibaca. Jika Anda hanya ingin alamat yang lebih pendek tanpa pengaturan pelacakan, bersihkan link terlebih dahulu.
Pengodean ganda
Kesalahan yang paling umum adalah mengodekan nilai dua kali. Jika teks %20 dikodekan lagi, hasilnya %2520, karena tanda persennya sendiri dikodekan menjadi %25. Halaman kemudian mencari %20 secara harfiah di dalam nilai, dan pencarian atau halamannya tidak cocok. Dekode link sekali, periksa hasilnya, dan kodekan nilai hanya saat memang diperlukan.
Escape yang rusak
Tanda persen harus diikuti dua digit heksadesimal, dan digit-digitnya harus membentuk UTF-8 yang valid untuk huruf beraksen. Link yang terpotong, atau tanda persen nyasar yang diketik dalam teks, bisa menghasilkan escape yang rusak seperti %E0%A4%A. Alat ini mendekode apa yang bisa didekode, membiarkan byte yang rusak persis seperti aslinya, dan melaporkan berapa banyak yang tidak bisa didekode. Alat ini tidak berhenti di kesalahan pertama.
Kasus khusus
- Spasi pada link yang diketik manual. Kolom alamat browser mengodekan spasi untuk Anda, tetapi link yang disalin ke dokumen bisa tetap berisi spasi mentah. Kodekan spasinya sebelum Anda membagikan link.
- Nama domain non-Inggris. Nama domain ini memakai sistem terpisah, yaitu punycode, dan mengodekan path atau query tidak mengubah nama host.
- Setengah emoji. Salinan yang rusak bisa menyisakan satu surrogate half, yang tidak bisa dikodekan. Alat ini menggantinya dengan simbol pengganti dan memberi tahu Anda bahwa ia melakukannya.
- Base64 di dalam link. Nilai Base64 dalam link mengikuti aturannya sendiri, dengan - dan _ menggantikan + dan /. Lihat penjelasan Base64.
Cara melakukannya dengan fixmint
- Tempel teks atau link ke Text or URL.
- Pilih Encode atau Decode, lalu Component untuk satu nilai, atau Full URL untuk seluruh alamat.
- Centang Use + for spaces (form data) untuk link yang disalin dari formulir web.
- Untuk link, baca Query parameters, decoded untuk melihat setiap nama dan nilai.
- Salin hasilnya.
Jawaban singkat
Apa arti %20?
Spasi. Nilai byte-nya adalah 20 dalam heksadesimal.
Kenapa ada + di link saya, bukan %20?
Link itu kemungkinan berasal dari formulir, tempat + berarti spasi. Opsi "Use + for spaces (form data)" akan mendekodenya.
Kenapa saya melihat %2520 di link saya?
Nilainya sudah dikodekan dua kali. Tanda persen dari %20 dikodekan lagi menjadi %25. Dekode sekali untuk kembali ke %20, dan sekali lagi untuk mendapatkan spasinya.
Diterjemahkan dari Asli dalam bahasa Inggris dengan bantuan AI.
Komentar
Belum ada komentar. Jadilah yang pertama.


