Encoder/Decoder URL

Sandi teks untuk URL dengan encodeURIComponent, atau urai kembali, dengan opsi spasi sebagai + untuk data formulir. Semuanya berjalan di browser Anda.

Penyandian terjadi secara lokal di browser Anda. Tidak ada yang meninggalkan perangkat.

—

Cara kerja

Alat ini meniru apa yang dilakukan browser saat menyusun permintaan: Sandi menjalankan encodeURIComponent atas input Anda, mengganti setiap karakter yang bukan huruf aman-URL, digit, atau salah satu dari - _ . ~ dengan byte UTF-8-nya yang ditulis sebagai %XX. Urai membaliknya, pertama mengubah + kembali menjadi spasi (konvensi formulir) lalu menyelesaikan sekuen persen, dan menandai error ketika % tidak diikuti dua digit heksadesimal yang valid.

encodeURIComponent vs encodeURI
encodeURI mengasumsikan Anda memberikan URL lengkap dan membiarkan karakter struktural — : / ? # [ ] @ ! $ & ' ( ) * + , ; = — apa adanya. encodeURIComponent mengasumsikan Anda menyandikan satu komponen (nilai kueri, segmen jalur) dan melepas semua itu juga. Untuk nilai parameter, encodeURIComponent pilihan yang lebih aman, dan itulah yang dipakai alat ini.
Sandi formulir (application/x-www-form-urlencoded)
Cara formulir HTML mengirim query string berbeda dari percent-encoding murni pada satu hal yang terlihat: spasi menjadi + alih-alih %20. Kotak "Spasi sebagai +" mereproduksi konvensi itu, dan Urai selalu menerima + sebagai spasi, sehingga apa pun hasil formulir browser bisa diproses bolak-balik.
Karakter reserved vs unreserved
Hanya karakter unreserved (huruf, digit, - _ . ~) yang boleh muncul apa adanya. Karakter reserved membawa sintaks di URL, dan apa pun di luar ASCII harus disandikan persen melalui byte UTF-8-nya — karena itu emoji menjadi sekuen empat byte seperti %F0%9F%98%80.

Pertanyaan yang sering diajukan

Perlukah saya menyandikan teks yang sudah tersandi?

Jangan — menyandikan dua kali menghasilkan double-encoding. Tanda persen itu sendiri ikut di-escape, sehingga %20 menjadi %2520 dan %40 menjadi %2540, yang kebanyakan server serahkan apa adanya ke aplikasi Anda. Jika string Anda sudah berisi sekuen %XX, jalankan Urai dulu untuk menormalkannya, sunting, lalu Sandi sekali.

Apakah parameter kueri dan segmen jalur butuh sandi yang berbeda?

Sandi tiap nilai parameter dengan encodeURIComponent dan Anda selalu aman. Secara konvensi, segmen jalur mentolerir beberapa karakter tambahan (: @ + $), tetapi encodeURIComponent juga melepasnya — server mengurai kembali, jadi kelebihan sandi tidak berbahaya. Simpan encodeURI untuk URL utuh ketika Anda ingin struktur : / ? # dipertahankan.

Mengapa & dan = ikut disandikan?

Karena keduanya adalah pemisah query string: & memisahkan parameter dan = memisahkan nama dari nilainya. Jika nilai Anda memuat salah satunya — misalnya URL di dalam parameter atau kode promo seperti SALE&2026 — karakter itu harus di-escape (%26, %3D) agar server tidak memecah nilai Anda di tempat yang salah.

Bagaimana emoji dan teks non-Latin ditangani?

URL hanya bisa membawa ASCII, jadi sisanya disandikan sebagai byte UTF-8, satu %XX per byte. café menjadi caf%C3%A9 dan emoji menjadi empat byte seperti %F0%9F%98%80. Ini standar modern; bentuk lama %uXXXX dari escape() JavaScript tidak valid di URL dan tidak dihasilkan alat ini.

Apakah ada yang diunggah ke server?

Tidak. Penyandian dan penguraian hanyalah beberapa baris JavaScript murni yang berjalan di browser Anda. URL Anda tidak pernah meninggalkan perangkat, dan tidak ada akun, pelacakan, atau permintaan jaringan yang terkait konversi ini.