CodeKitHub
Alat Pengekodan

Pengekod / Penyahkod URL Dalam Talian

Kemas kini terakhir:

Percent-encode teks untuk kegunaan selamat dalam URL, atau decode URL yang telah di-encode kembali kepada bentuk yang boleh dibaca. Pilih mod komponen (meng-encode segalanya, untuk nilai parameter query) atau mod URL penuh (mengekalkan struktur :// ? &). Berjalan sepenuhnya dalam pelayar anda.

Apakah alat ini?

URL encoding (percent encoding) menggantikan aksara yang tidak dibenarkan dalam URL dengan % diikuti nilai byte dalam hex — ruang menjadi %20, dan 你 menjadi %E4%BD%A0. Tanpa ini, aksara seperti ruang, &, ? dan teks bukan-ASCII akan merosakkan struktur URL atau disalah tafsir oleh pelayan.

Terdapat dua keperluan biasa, dan alat ini menyokong kedua-duanya: meng-encode nilai yang masuk dalam parameter query (mod komponen — turut meng-encode / ? & =), dan meng-encode keseluruhan URL sambil mengekalkan strukturnya (mod URL penuh — mengekalkan :// ? & tidak berubah).

Satu keanehan sejarah yang patut diketahui: ruang sepatutnya %20 di bawah piawaian URL (RFC 3986), tetapi penghantaran borang HTML secara tradisinya meng-encode ia sebagai tanda tambah — itulah sebabnya anda nampak kedua-dua q=hello%20world dan q=hello+world di luar sana, dan mengapa decode data borang kadangkala perlu mengendalikan + secara berasingan.

Kenapa guna alat ini?

  • Bina query string dengan selamat — input pengguna dengan &, = atau ruang tidak akan merosakkan URL anda.
  • Decode URL panjang yang di-encode daripada log, analitik atau rantaian redirect untuk melihat maksud sebenarnya.
  • Pengendalian UTF-8 yang betul untuk teks Cina, emoji dan teks bukan-ASCII lain.
  • Dua mod supaya anda tidak tersilap meng-encode : dan / bagi keseluruhan URL.
  • Percuma, segera, tiada muat naik.

Cara menggunakannya

  1. Tampal teks atau URL anda ke dalam kotak input.
  2. Pilih mod: "Component" untuk nilai yang masuk dalam parameter query, "Full URL" untuk keseluruhan URL.
  3. Klik "Encode" atau "Decode".
  4. Salin hasilnya.

Contoh

Input

https://example.com/search?q=hello world & 你好

Hasil

Component mode: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Full URL mode:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

Mod komponen turut meng-encode aksara struktur; mod URL penuh mengekalkannya.

Kegunaan biasa

  • Membina URL boleh kongsi di mana istilah carian atau nilai penapis datang daripada input pengguna dan mungkin mengandungi ruang, &, atau aksara khas lain.
  • Decode URL penjejakan atau redirect yang panjang daripada e-mel atau kempen iklan untuk melihat destinasi dan parameter sebenar sebelum mengkliknya.
  • Menyahpepijat kenapa parameter query tidak dibaca dengan betul oleh pelayan — selalunya puncanya ialah aksara reserved yang sepatutnya di-encode tetapi tidak.
  • Menyediakan nilai bukan-Inggeris (Cina, Jepun, Arab, dsb.) untuk digunakan dalam query string URL.

encodeURIComponent vs encodeURI, dalam praktiknya

Ini sepadan terus dengan dua mod alat ini dan berkait dengan fungsi JavaScript sebenar yang sudah dikenali pembangun: encodeURIComponent (mod komponen) meng-encode segalanya kecuali sekumpulan kecil aksara unreserved, menjadikannya selamat untuk mana-mana nilai tunggal yang dimasukkan ke dalam URL — inilah yang anda guna untuk parameter query, segmen laluan, atau nilai fragmen hash. encodeURI (mod URL penuh) mengekalkan aksara struktur URL (:, /, ?, #, &, =) tidak berubah kerana ia menganggap anda sedang meng-encode keseluruhan URL yang sudah berstruktur, bukan satu nilai mentah — menggunakannya pada satu nilai parameter akan gagal meng-encode aksara & atau = yang mungkin terkandung dalam nilai itu, iaitu kesilapan paling biasa apabila memilih mod yang salah.

Aksara reserved berbanding unreserved

Spesifikasi URL (RFC 3986) membahagikan aksara kepada dua kumpulan: aksara unreserved (huruf, digit, - _ . ~) sentiasa selamat dan tidak perlu di-encode, manakala aksara reserved (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) mempunyai makna khas dalam struktur URL dan hanya perlu di-encode apabila muncul sebagai data literal dan bukan tanda baca struktur. Inilah sebab kedua-dua mod ini wujud — mod komponen menganggap aksara reserved sebagai data yang perlu dilindungi, mod URL penuh menganggapnya sebagai struktur yang perlu dikekalkan. Memahami perbezaan ini lebih berguna daripada menghafal bila hendak guna mod yang mana, kerana ia menjelaskan kenapa aksara yang sama (seperti &) kadangkala di-encode dan kadangkala tidak, bergantung pada peranannya dalam URL tertentu itu.

Soalan lazim

Bila saya patut guna mod komponen berbanding mod URL penuh?

Mod komponen (encodeURIComponent) apabila meng-encode satu nilai tunggal yang masuk dalam parameter query — ia meng-encode /, ?, & dan = supaya tidak merosakkan URL. Mod URL penuh (encodeURI) apabila meng-encode keseluruhan URL — ia mengekalkan aksara struktur supaya URL masih berfungsi.

Kenapa %20 muncul dan bukannya + untuk ruang?

Kedua-duanya sah dalam konteks berbeza. %20 ialah percent-encoding sejagat untuk ruang; + bermaksud ruang hanya dalam query string menggunakan format application/x-www-form-urlencoded yang lebih lama. Alat ini menggunakan %20, yang berfungsi di mana-mana sahaja.

Kenapa decode gagal dengan ralat?

Input mengandungi jujukan percent yang tidak lengkap, seperti % yang tidak diikuti dua digit hex. Ini sering berlaku apabila URL terpotong atau di-decode dua kali. Betulkan atau buang jujukan % yang rosak.

Apakah double encoding?

Meng-encode teks yang sudah di-encode: %20 menjadi %2520 kerana % itu sendiri di-encode kepada %25. Ini bug biasa — jika output decode anda masih mengandungi kod %, decode sekali lagi.

Adakah ini mengendalikan aksara Cina dan emoji?

Ya. Teks di-encode sebagai byte UTF-8, jadi 你好 menjadi %E4%BD%A0%E5%A5%BD dan decode kembali dengan sempurna — sama seperti kelakuan pelayar web.

Alat berkaitan