🌐 ID

🔗 URL Encoder/Decoder

Encode atau decode URL dengan aman. Proses karakter khusus, karakter internasional, dan spasi di parameter query untuk membuat URL yang valid.

PANDUAN

Pelajari lebih lanjut

01

1. Apa itu URL Encoding?

URL encoding (percent encoding) adalah proses mengubah karakter yang tidak aman di URL menjadi % diikuti kode heksadesimal. Karena URL hanya mengizinkan karakter ASCII, karakter Korea, karakter khusus, dan spasi perlu di-encode. Misalnya, spasi menjadi %20, @ menjadi %40, dan karakter é di-encode menjadi %C3%A9. Ditetapkan dalam standar RFC 3986, karakter selain A-Z, a-z, 0-9, -, _, ., ~ harus di-encode. Bagian URL yang berbeda (parameter query, path, hash) memiliki aturan encoding yang berbeda.

02

2. Mengapa Karakter Khusus Perlu Di-Encode

Karakter khusus di URL memiliki makna tertentu, jadi harus di-encode agar bisa digunakan sebagai nilai. Misalnya, & adalah pemisah parameter, jadi untuk memasukkan & ke dalam nilai, encode sebagai %26. = adalah pemisah key-value, ? memulai query, # memulai fragmen. Spasi di-encode sebagai + atau %20. Tanpa encoding untuk bahasa Korea atau karakter khusus, server mungkin gagal mem-parse dengan benar atau mengembalikan error 404. Selalu encode saat menyertakan istilah pencarian atau input pengguna di URL.

03

3. Encoding Parameter Query

Parameter query adalah bagian URL yang paling sering di-encode. Contoh: https://example.com/search?q=search&category=IT. Baik "search" maupun "IT" harus di-encode. Menggunakan encodeURIComponent() di JavaScript akan meng-encode =, &, ? sehingga aman untuk nilai parameter query. encodeURI() digunakan untuk meng-encode seluruh URL, tetapi tidak meng-encode =, &, ?, sehingga tidak cocok untuk nilai query. Selalu encode key dan value secara terpisah dengan encodeURIComponent().

04

4. encodeURI vs encodeURIComponent

JavaScript memiliki dua fungsi URL encoding. encodeURI() meng-encode seluruh URL dan tidak meng-encode karakter struktur URL seperti :, /, ?, &, =. Gunakan untuk URL lengkap. encodeURIComponent() meng-encode komponen URL (nilai parameter, dan lain-lain) serta meng-encode semua karakter struktur. Gunakan untuk komponen individual seperti parameter query dan segmen path. Dalam sebagian besar kasus, menggunakan encodeURIComponent() lebih aman. Decode masing-masing dengan decodeURI() dan decodeURIComponent().

05

5. Internationalized Domain Names (IDN)

Nama domain dalam bahasa Korea atau bahasa lain (misalnya, hanguk.com) dikonversi menjadi Punycode. Punycode merepresentasikan domain Unicode dalam ASCII menggunakan awalan xn--. Contoh: "hanguk.com" menjadi "xn--3e0b707e.com". Browser otomatis melakukan konversi ini, tetapi saat menanganinya langsung di kode, diperlukan library Punycode. Perhatikan bahwa path dan query URL menggunakan percent encoding biasa, sedangkan domain menggunakan Punycode.

06

6. Praktik Terbaik URL Encoding

Pertimbangan penting untuk URL encoding: Selalu encode input pengguna untuk mencegah serangan XSS. Hati-hati agar tidak melakukan double-encode pada URL yang sudah di-encode. Saat menyusun URL, encode setiap bagian secara individual lalu gabungkan. Klien HTTP seperti fetch() dan axios sering kali meng-encode secara otomatis, jadi hindari duplikasi. Server biasanya mendukung decoding otomatis, jadi decoding eksplisit umumnya tidak diperlukan. Saat mencatat atau men-debug URL, melihat bentuk yang sudah didecode lebih mudah dibaca.

Pertanyaan umum

Haruskah saya memilih component encoding atau full URL encoding?
Gunakan "component encoding" saat hanya meng-encode sebagian URL, seperti nilai parameter query. Gunakan "full URL encoding" hanya saat menangani seluruh URL lengkap.
Mengapa URL non-Inggris perlu di-encode?
URL hanya mengizinkan karakter ASCII, jadi karakter non-ASCII (seperti é, teks Korea, atau teks China) harus diubah menjadi percent encoding (misalnya, %C3%A9) agar server dapat memprosesnya dengan benar.
Apa yang terjadi jika saya meng-encode URL yang sudah di-encode?
Anda akan mendapatkan double encoding, di mana % di-encode ulang menjadi %25, sehingga nilai aslinya rusak. Periksa apakah string sudah di-encode sebelum meng-encode-nya lagi.
Apa yang harus saya lakukan jika decoding menampilkan error "Invalid URL encoding"?
Periksa urutan persen yang tidak lengkap di input Anda (misalnya, %2 tanpa cukup digit heksadesimal setelahnya). Hanya string yang di-encode dengan benar yang bisa didecode.
Bagaimana spasi di-encode?
Spasi biasanya di-encode sebagai + dalam query string atau %20 dalam path. Alat ini menggunakan format percent-encoding standar %20.