Enkoder / Dekoder URL (persen-encoding, aman UTF-8)
Gunakan untuk menyematkan teks dengan aman di URL, parameter kueri, atau data formulir. Menangani spasi, karakter khusus, dan Unicode (termasuk CJK dan emoji) dengan benar.
Cara kerjanya
Apa itu encoding URL
URL dibatasi pada set kecil karakter ASCII. Untuk menyertakan hal lain โ spasi, aksen, karakter Cina, emoji, simbol khusus โ Anda mengganti setiap byte yang tidak aman dengan %XX di mana XX adalah nilai byte heksadesimalnya. Spasi menjadi %20, garis miring %2F, karakter kanji ๆผข menjadi %E6%BC%A2 (byte UTF-8-nya yang dikodekan persen).
Kalkulator ini menggunakan encodeURIComponent dan decodeURIComponent bawaan browser. Ia mengkodekan semua yang bukan karakter yang tidak dikhususkan (huruf, digit, -._~), yang merupakan perilaku yang tepat untuk parameter kueri dan data formulir.
encodeURI vs encodeURIComponent
JavaScript memiliki dua enkoder. encodeURI membiarkan karakter struktur URL (/ ? & # = + dll.) tidak diubah โ gunakan pada URL lengkap. encodeURIComponent meng-escape semuanya โ gunakan pada nilai di dalam parameter kueri.
Alat ini menggunakan encodeURIComponent, pilihan yang lebih aman untuk menyematkan teks sembarang ke dalam URL. Jika Anda memiliki URL lengkap dengan struktur yang ingin Anda pertahankan, kodekan hanya bagian yang perlu.
Jebakan umum
Tanda plus dalam URL. Beberapa server memperlakukan '+' sebagai spasi (warisan dari form encoding). encodeURIComponent membiarkan '+' sendiri, tetapi server mungkin mendekodenya sebagai spasi. Untuk keamanan, ganti '+' dengan %2B jika Anda mengirimnya sebagai data.
Pengkodean ganda. Mengkodekan string yang sudah dikodekan menambahkan lapisan lain (% menjadi %25, jadi '%20' menjadi '%2520'). Selalu periksa apakah input sudah dikodekan sebelum menjalankan enkode lagi.
Peningkatan panjang. Karakter multi-byte UTF-8 berkembang menjadi 3-4 kode persen masing-masing. String 100 karakter dalam huruf Indonesia dengan aksara khusus dapat dengan mudah menjadi URL 300+ karakter.
Pertanyaan umum
โบMengapa '%20' saya tidak didekode menjadi spasi?
Seharusnya bisa โ tetapi jika Anda memiliki '+' dalam URL itu mungkin juga merepresentasikan spasi (form encoding warisan). Ganti + dengan spasi terlebih dahulu jika diperlukan.
โบApakah ini menangani emoji?
Ya. Emoji dikodekan sebagai urutan byte UTF-8 mereka (biasanya 4 byte / 4 kode persen per emoji).
โบApa perbedaan antara encoding URL dan encoding HTML?
Encoding URL menggunakan notasi % untuk konteks URL. Encoding HTML menggunakan < > dll. untuk HTML. Konteks berbeda, aturan berbeda.
โบKapan saya harus mengkodekan dan kapan tidak?
Kodekan nilai apapun yang masuk ke parameter kueri URL, segmen jalur yang mengandung input pengguna, atau data formulir. Jangan kodekan URL yang sudah dibuat โ itu akan mengkodekan ganda.
โบMengapa '%' dalam teks yang didekode menyebabkan kesalahan?
Tanda '%' kosong yang diikuti sesuatu yang bukan hex valid adalah persen-encoding yang tidak valid. Kodekan '%' ke '%25' sebelum menyertakannya dalam URL.
โบApakah browser melakukan ini secara otomatis?
Ya โ saat membangun URL melalui API URL atau URLSearchParams. Alat ini mengekspos logika yang sama untuk penggunaan ad-hoc.
โบKarakter mana yang 'aman' dan tidak perlu dikodekan?
Huruf (A-Z, a-z), digit (0-9), dan ini: - . _ ~ . Semua yang lain mendapatkan persen-kodekan oleh encodeURIComponent.
โบApakah data meninggalkan browser saya?
Tidak. Pengkodean dan pendekodean keduanya berjalan secara lokal.
Alat terkait
Terakhir diperbarui: