Membina nilai query-string
Sebarang input pengguna yang anda letakkan ke dalam ?q=... mesti dikodkan dengan mod Component. Mod URI akan membiarkan = dan & mentah, merosakkan URL anda apabila nilai itu mengandunginya.
Encode sebarang teks menjadi rentetan percent-encoding yang selamat untuk URL, atau nyahkod URL berkod kembali kepada teks biasa. Pratonton langsung, selamat UTF-8, dan dijalankan sepenuhnya dalam pelayar anda.
Component (encodeURIComponent) escape segala-galanya yang bukan aksara unreserved — paling selamat untuk nilai query-string, segmen path, atau sebarang medan tunggal. URI (encodeURI) mengekalkan aksara struktur URL (:/?#=&) — gunakannya pada URL penuh. Form (application/x-www-form-urlencoded) ialah Component + ruang menjadi '+' — yang digunakan oleh borang HTML.
RFC 3986 mentakrifkan satu set aksara "unreserved" yang tidak memerlukan pengekodan: A-Z a-z 0-9 - _. ~. Apa-apa lain di-percent-encode. encodeURIComponent juga mengekod :/?#&= yang dibiarkan oleh encodeURI. Perbezaan ini penting apabila anda mengekod nilai query berbanding URL penuh.
Lepaskan fail teks di sini, atau klik untuk melayari
Sebarang fail teks UTF-8:.txt,.csv,.json,.url,.log
Pantas, tepat, hanya dalam pelayar — dibina untuk pembangun, penulis salinan, dan sesiapa yang sedang debug URL.
Pilih mod Component, URI Penuh, atau Form bergantung pada apa yang anda kodkan — nilai query-string, URL penuh, atau payload borang HTML.
Setiap encode dan decode berlaku dalam pelayar anda menggunakan JavaScript asli. Teks dan URL anda tidak pernah meninggalkan peranti anda.
Output dikemas kini pada setiap ketukan kekunci — tiada butang "Encode" untuk diklik, tiada round-trip ke pelayan.
Emoji, aksara CJK, Latin beraksen, dan Cyrillic round-trip dengan betul melalui encodeURIComponent dan kembali.
Semasa decode, secara pilihan anggap '+' sebagai ruang — konvensyen yang digunakan borang HTML di bawah application/x-www-form-urlencoded.
Lepaskan fail.txt,.csv, atau.json untuk encode atau decode dalam satu langkah. Output dimuat turun sebagai.txt yang bersih.
Tiga API pelayar asli, tiga mod, semuanya berjalan dalam halaman yang anda baca ini.
Pada setiap ketukan kekunci, rentetan input dihantar kepada fungsi JavaScript kecil. Tiada debounce, tiada panggilan API, tiada fetch — fungsi ini berjalan secara serentak dalam tab pelayar anda.
Component memanggil encodeURIComponent — escape segala-galanya yang bukan A-Z a-z 0-9 - _. ~. URI memanggil encodeURI — mengekalkan :/?#=& supaya URL penuh kekal sah. Form menggunakan encodeURIComponent dan menggantikan ruang dengan + mengikut application/x-www-form-urlencoded.
Kedua-dua encodeURIComponent dan encodeURI secara dalaman menukar rentetan kepada bait UTF-8 sebelum percent-encoding setiap bait yang tidak selamat. Itu bermakna %E4%B8%AD untuk aksara Cina 中 — tepat seperti yang dikehendaki RFC 3986.
Hasilnya ditetapkan sebagai nilai output baca-sahaja. Klik Salin untuk meletakkannya pada papan klip anda melalui navigator.clipboard.writeText, atau Muat Turun untuk menyimpannya sebagai .txt melalui Blob URL — kedua-duanya kekal dalam pelayar anda.
Situasi sebenar di mana mod pengekodan yang betul mencegah pepijat.
Sebarang input pengguna yang anda letakkan ke dalam ?q=... mesti dikodkan dengan mod Component. Mod URI akan membiarkan = dan & mentah, merosakkan URL anda apabila nilai itu mengandunginya.
Sesetengah aplikasi sembang dan PDF merosakkan pautan apabila ia mengandungi ruang mentah atau aksara bukan-ASCII. Jalankan URL melalui mod URI untuk menjadikannya selamat untuk salin-tampal di mana-mana.
Apabila API anda menolak permintaan, tampal URL ke dalam mod Decode untuk melihat apa yang sebenarnya dilihat oleh pelayan. Nilai double-encoded (di mana % sendiri telah dikodkan sebagai %25) muncul serta-merta.
Apabila debug badan POST dalam application/x-www-form-urlencoded, decode dengan togol "+ sebagai ruang" dihidupkan. Itulah konvensyen yang digunakan pelayar, dan terlupa adalah punca #1 pepijat "mengapa nama pengguna saya muncul dengan tanda tambah".
URL yang anda kodkan selalunya mengandungi e-mel pelanggan sebenar, ID, atau token sesi — tepat jenis data yang anda tidak mahu tampal ke dalam alat pelayan orang asing. iKit URL Encoder berjalan sebagai JavaScript yang sudah dimuatkan dalam pelayar anda, jadi input tidak pernah meninggalkan tab anda.
fetch, XHR, atau beacon semasa encode atau decode.
Tutorial mendalam dan perbandingan alat daripada blog iKit.
The 30-year-old form-encoding quirk explained — when + means space, when it means literal +, and how to fix the email-with-plus bug.
When to reach for Base64 versus URL percent-encoding, and what each encoding actually solves.
Pretty-print, validate, and structurally diff messy JSON in any browser.
Component (encodeURIComponent) escape segala-galanya yang bukan aksara unreserved — paling selamat untuk nilai query-string, segmen path, atau sebarang medan tunggal. URI (encodeURI) mengekalkan aksara struktur URL (:/?#=&) — gunakannya pada URL penuh. Form (application/x-www-form-urlencoded) ialah Component + ruang menjadi '+' — yang digunakan oleh borang HTML.
RFC 3986 mentakrifkan satu set aksara "unreserved" yang tidak memerlukan pengekodan: A-Z a-z 0-9 - _. ~. Apa-apa lain di-percent-encode. encodeURIComponent juga mengekod :/?#&= yang dibiarkan oleh encodeURI. Perbezaan ini penting apabila anda mengekod nilai query berbanding URL penuh.
Tiga punca biasa: (1) yang asal adalah Form-encoded jadi '+' patut dianggap ruang — togol pilihan itu. (2) Double-encoded — input dikodkan dua kali; decode sekali lagi. (3) Urutan percent tidak sah — % terbiar tanpa diikuti dua digit hex. Periksa mesej ralat untuk kedudukan bait yang tepat.
Ya untuk mod Component — kami memanggil encodeURIComponent secara langsung. Mod Form menambah pelarasan pengekodan borang standard (! ' * menjadi %21 %27 %28 %29 %2A) menurut RFC 3986 + WHATWG. Mod URI memanggil encodeURI, yang merupakan apa yang dimaksudkan oleh kebanyakan bahasa dengan 'percent-encode URL'.
Tidak. Keseluruhan alat ini ialah JavaScript di dalam halaman ini — pengekodan dan penyahkodan berlaku dalam pelayar anda. Anda boleh sahkan dengan membuka DevTools → Network dan perhati: tiada permintaan dihantar semasa operasi encode atau decode.