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é.
Cara guna
- Pilih Kod atau Nyahkod, kemudian taip atau tampal teks ke dalam kotak input.
- Pilih Komponen untuk mengekod satu nilai seperti kata carian. Pilih URL penuh untuk mengekod seluruh alamat dan mengekalkan aksara seperti : / ? & = # sebagaimana adanya.
- Tandakan pilihan tambah jika teks menggunakan + untuk ruang, seperti borang HTML. Keputusan dikemas kini semasa anda menaip.
- 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
| Aksara | Dikod | Nota |
|---|---|---|
| Ruang | %20 (atau +) | + hanya dalam query string |
| & | %26 | Memisahkan parameter, jadi kodkan dalam nilai |
| = | %3D | Memisahkan kunci daripada nilai |
| ? | %3F | Memulakan query string |
| # | %23 | Memulakan fragmen |
| / | %2F | Pemisah laluan |
| % | %25 | Aksara escape itu sendiri |
| + | %2B | Tanda 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.