Pengekod dan Penyahkod URL

Pengekodan URL menggantikan aksara tidak selamat dengan tanda peratus dan dua digit heks. Ruang menjadi %20, dan "a&b" menjadi a%26b. Menyahkod caf%C3%A9 memberi café.

Adakah masalah anda selesai?
Pilih kami di Google

Cara guna

  1. Pilih Kod atau Nyahkod, kemudian taip atau tampal teks ke dalam kotak input.
  2. Pilih Komponen untuk mengekod satu nilai seperti kata carian. Pilih URL penuh untuk mengekod seluruh alamat dan mengekalkan aksara seperti : / ? & = # sebagaimana adanya.
  3. Tandakan pilihan tambah jika teks menggunakan + untuk ruang, seperti borang HTML. Keputusan dikemas kini semasa anda menaip.
  4. Jika input ialah URL atau query string, jadual di bawah keputusan menyenaraikan setiap parameter dengan kunci dan nilai yang telah dinyahkod. Tekan Salin untuk menyalin output, atau Jadikan input untuk membalikkan keputusan bagi pusingan seterusnya.

Cara kiraan

Percent encoding menukar setiap aksara tidak selamat kepada bait UTF-8, dan menulis setiap bait sebagai tanda peratus diikuti dua digit heks. Huruf é ialah dua bait C3 A9, jadi ia menjadi %C3%A9. Emoji menggunakan empat bait, jadi ia menjadi empat kumpulan %XX.

Mod Komponen menggunakan encodeURIComponent. Ia hanya mengekalkan huruf, digit dan - _ . ! ~ * ' ( ) dan melepaskan semua yang lain, termasuk / ? & = : dan #. Gunakannya untuk satu nilai dalam URL. Mod URL penuh menggunakan encodeURI, yang turut mengekalkan aksara yang membentuk struktur URL (; , / ? : @ & = + $ #), jadi ia sesuai untuk seluruh alamat.

Penyahkodan membalikkan proses ini. Jika teks mengandungi % yang tidak diikuti dua digit heks, atau bait tidak membentuk UTF-8 yang sah, pelayar enggan menyahkod dan alat ini memaparkan ralat. Dalam jadual query, bahagian sedemikian dikekalkan seperti ditulis dan ditandakan merah, supaya satu nilai buruk tidak menyembunyikan yang lain.

Tanda tambah bermaksud ruang hanya dalam data borang (application/x-www-form-urlencoded) dan kebanyakan query string. Dalam laluan, + ialah tanda tambah sebenar. Jadual query sentiasa membaca + sebagai ruang, manakala penyahkod utama berbuat demikian hanya apabila anda menandakan pilihan itu.

Aksara biasa

AksaraDikodNota
Ruang%20 (atau +)+ hanya dalam query string
&%26Memisahkan parameter, jadi kodkan dalam nilai
=%3DMemisahkan kunci daripada nilai
?%3FMemulakan query string
#%23Memulakan fragmen
/%2FPemisah laluan
%%25Aksara escape itu sendiri
+%2BTanda tambah sebenar mesti dikod

Soalan lazim

Apakah beza encodeURI dengan encodeURIComponent?

encodeURIComponent melepaskan aksara yang memisahkan bahagian URL (/ ? & = : #), jadi ia selamat untuk satu nilai. encodeURI membiarkannya, jadi ia boleh mengekod alamat penuh tanpa merosakkan strukturnya.

Mengapa ruang menjadi %20 atau tanda tambah?

%20 ialah pengekodan standard bagi ruang dan berfungsi di mana-mana. Tanda tambah ialah pengekodan borang yang lebih lama untuk ruang dan hanya sah dalam query string. Pilihan tambah menulis + dan bukan %20 apabila anda mengekod.

Mengapa penyahkodan gagal dengan ralat malformed?

Teks mempunyai tanda % tunggal, % diikuti aksara bukan heks, atau bait yang bukan UTF-8 sah, seperti %C3 sahaja. Betulkan atau buang bahagian yang rosak. Jadual query masih menunjukkan parameter lain.

Adakah ia menyokong teks bukan Inggeris dan emoji?

Ya. Teks ditukar kepada UTF-8 dahulu, jadi mana-mana bahasa dan emoji boleh dikod dan dinyahkod dengan betul.

Adakah URL saya dihantar ke pelayan?

Tidak. Semuanya berjalan dalam pelayar anda. Pautan yang mengandungi token atau data peribadi tidak pernah meninggalkan peranti anda.