Alfabet Indonesia hampir seluruhnya berupa huruf Latin biasa, jadi teks seperti "beli sepatu" nyaris tidak berubah saat di-percent-encoding — tapi spasi, &, ?, dan simbol khusus lain tetap harus diubah menjadi urutan %XX agar tautan tetap valid.
Kenapa hanya spasi dan simbol yang membengkak
Karena huruf Latin sudah berupa 1 byte ASCII, teks Indonesia hanya bertambah panjang pada karakter yang memang perlu di-escape: spasi menjadi %20, & menjadi %26. Ini beda jauh dari bahasa yang tulisannya bukan Latin — di mana tiap huruf butuh beberapa byte UTF-8 dan berubah jadi beberapa kode %XX sekaligus.
encodeURIComponent vs encodeURI
encodeURIComponent meng-encode hampir semua karakter yang punya arti struktural — &, ?, =, / — jadi cocok untuk satu nilai saja, misalnya kata pencarian yang dimasukkan ke ?q=. encodeURI membiarkan karakter struktural itu apa adanya karena dipakai untuk meng-encode satu URL utuh yang sudah tersusun.
Kesalahan umum saat membuat link WhatsApp
Saat membuat tautan wa.me atau api.whatsapp.com/send?text= dengan pesan siap-kirim, hanya nilai parameter text yang perlu di-encode. Kalau seluruh URL ikut di-encode, tanda ? yang memisahkan URL dan parameter ikut berubah jadi %3F dan tautannya jadi tidak berfungsi.
Kapan ini dibutuhkan
- Menyisipkan kata pencarian atau nama produk ke dalam parameter query di Tokopedia atau Shopee.
- Membuat tautan WhatsApp dengan pesan siap-kirim.
- Debugging: men-decode URL untuk melihat data asli di balik kode
%XX.
Edge case: double encoding
Kalau string yang sudah di-encode di-encode ulang, tanda % itu sendiri berubah jadi %25 — hasilnya jadi kode yang tidak terbaca (%20 menjadi %2520). Ini sering terjadi kalau sebuah framework sudah otomatis meng-encode URL, lalu kode di sisi developer memanggil encodeURIComponent sekali lagi secara manual.