HTML Encoder

HTML Encoder / Decoder

Escape `& < > " '` kepada entiti HTML yang selamat, atau nyahkod teks ber-escape entiti kembali kepada teks biasa. Empat tahap pengekodan — Minimal, Bernama, Berangka, Semua bukan ASCII. Selamat UTF-8 + emoji + CJK, dalam pelayar anda.

Lalai kepada Minimal — escape hanya & < > " ', lima aksara yang merosakkan konteks badan / atribut HTML. Itulah yang dilakukan oleh setiap enjin templat moden. Gunakan Entiti bernama jika anda mahu copyright / nbsp / anak panah dsb. sebagai kod yang boleh dibaca (&copy; dan bukan &#169;). Gunakan Berangka apabila menghantar HTML melalui pipeline yang mungkin tidak memahami entiti bernama. Gunakan Semua bukan ASCII apabila menyasarkan sistem ASCII sahaja yang ketat (pelayan e-mel lama, API yang rosak).

&apos; adalah sah dalam XML dan HTML5, tetapi tidak dalam HTML 4.01 — pelayar lama memaparkannya sebagai teks literal '. Rujukan berangka &#39; berfungsi di mana-mana. Penyahkod menerima &apos; sebagai input untuk keserasian.

Input
Output

Dibina untuk output HTML yang selamat

Escape kandungan pengguna untuk templat, nyahkod data ber-encode entiti — dengan beberapa sentuhan kecil yang menjadikannya menyeronokkan untuk digunakan.

Empat mod pengekodan

Minimal escape hanya lima aksara HTML yang tidak selamat (& < > " ') — pilihan lalai yang betul untuk kandungan biasa daripada pengguna. Bernama menggunakan entiti HTML5 yang boleh dibaca seperti &copy; / &nbsp; / &hearts; jika ada. Berangka mengenkodkan setiap codepoint bukan ASCII sebagai &#NN;. Semua bukan ASCII mengenkodkan setiap codepoint di luar ASCII boleh cetak untuk pipeline lama / hanya ASCII.

Nyahkod sebarang entiti

Penyahkod mengendalikan entiti bernama (&copy;), berangka perpuluhan (&#169;), dan berangka heks (&#xA9;). Codepoint pasangan surrogate (emoji, skrip kuno) round-trip dengan betul melalui UTF-16.

Pratonton langsung

Output dikemas kini pada setiap ketukan kekunci — tiada butang Enkod / Nyahkod untuk ditekan. Tukar arah dengan satu klik; butang Tukar mengalihkan output kembali ke input supaya anda boleh merangkai transformasi.

Selamat UTF-8 + emoji + CJK

Setiap codepoint Unicode round-trip: 中文, العربية, русский, हिंदी, 🎉, Þorgeir. Pengekod menggunakan iterasi setiap codepoint (bukan charAt) supaya pasangan surrogate kekal utuh.

Privasi mengikut reka bentuk

Teks anda kekal pada peranti anda. Pengekod, penyahkod, jadual entiti bernama semuanya dijalankan sebagai JavaScript secara setempat. Buka DevTools → Network dan sahkan tiada permintaan keluar.

Kecil + pantas

JavaScript tulen, tiada runtime framework. Muatan sejuk di bawah 25 KB gzipped. Dokumen HTML 100 KB diekod dalam masa di bawah 5 ms.

Cara mengenkod atau menyahkod entiti HTML

Empat langkah daripada teks mentah kepada output selamat entiti.

  1. 1

    Tampal teks anda

    Letakkan teks biasa atau HTML ke dalam panel Input. Apa-apa pun boleh — komen pengguna, catatan blog, emoji, CJK, skrip RTL. Pengekod mengiterasi mengikut codepoint supaya urutan berbilang bait kekal utuh.

  2. 2

    Pilih arah + mod

    Tetapkan Arah kepada Enkod (teks → entiti) atau Nyahkod (entiti → teks). Untuk Enkod, pilih mod: Minimal untuk templat, Bernama untuk entiti yang boleh dibaca, Berangka untuk bukan ASCII sebagai &#NN;, Semua bukan ASCII untuk output ASCII sahaja.

  3. 3

    Lihat pratonton langsung

    Output dikemas kini pada setiap ketukan kekunci. Bandingkan mod secara masa nyata dengan menukar dropdown. Gunakan Tukar untuk mengalihkan output kembali ke input — berguna untuk pengesahan round-trip (enkod kemudian nyahkod = asal).

  4. 4

    Salin atau muat turun

    Gunakan ikon salin untuk menolak hasil ke papan keratan anda, atau ikon muat turun untuk menyimpannya sebagai output.encode.html / output.decode.txt. Beza saiz (aksara / bait masuk → keluar) menunjukkan dengan tepat berapa banyak pengekodan mengembangkan atau menyusutkan teks tersebut.

Dibina untuk kerja harian web-dev

Empat senario biasa di mana alat pelayar yang mengutamakan privasi mengatasi tampalan kod ke dalam pengekod dalam talian rawak.

Membenamkan kandungan pengguna ke dalam templat dengan selamat

Komen pengguna, respons borang, pertanyaan carian — apa-apa yang datang dari luar yang berakhir di dalam <p>, <li>, atau atribut. Jalankan melalui enkod mod Minimal sebelum penggabungan rentetan ke dalam HTML anda, dan anda selamat daripada markup yang rosak dan payload XSS yang paling mudah.

Membaca data ber-escape entiti daripada API

Sesetengah API mengembalikan rentetan yang sudah ber-escape entiti (suapan RSS, eksport CMS tertentu, HTML yang dikikis). Tampal masuk, tekan Nyahkod, dapatkan kembali Unicode asal. Penyahkod mengendalikan entiti bernama, perpuluhan, dan heks termasuk pasangan surrogate.

Baris subjek e-mel + tag meta

<title>, <meta name="description">, <meta property="og:title"> — semuanya memerlukan escape entiti untuk aksara khas. Enkod tajuk anda sekali, tampal ke ketiga-tiganya.

Kandungan sensitif yang tidak boleh pergi ke perkhidmatan pihak ketiga

Kandungan CMS dalaman, data pelanggan, templat dilindungi NDA — apa-apa yang anda tidak boleh tampal ke pengekod awan. Alat pelayar sahaja mengekalkan setiap bait pada komputer riba anda. Buka DevTools → Network dan sahkan tiada apa-apa keluar.

100% peribadi — berjalan dalam pelayar anda

Teks anda tidak pernah meninggalkan peranti anda. Buka DevTools → Network dan anda akan melihat sifar permintaan keluar semasa enkod atau nyahkod.

  • Pengekod, penyahkod, dan jadual carian entiti bernama semuanya berjalan sebagai JavaScript pada mesin anda — tiada penukaran di sebelah pelayan, tiada API pihak ketiga.
  • Codepoint pasangan surrogate (emoji, skrip kuno) dikendalikan melalui iterasi codepoint, bukan pemetaan tahap bait — jadi tampalan 🎉 kekal sebagai 🎉 selepas round-trip.
  • Tiada log masuk, tiada telemetri pada kandungan teks. Kami hanya menggunakan satu kuki untuk keadaan persetujuan kuki dan satu untuk keutamaan bahasa.

Panduan berkaitan

Bacaan pilihan tentang escape HTML, jadual entiti, dan templat selamat.

Soalan lazim

Mod mana yang patut saya pilih?

Lalai kepada Minimal — escape hanya & < > " ', lima aksara yang merosakkan konteks badan / atribut HTML. Itulah yang dilakukan oleh setiap enjin templat moden. Gunakan Entiti bernama jika anda mahu copyright / nbsp / anak panah dsb. sebagai kod yang boleh dibaca (&copy; dan bukan &#169;). Gunakan Berangka apabila menghantar HTML melalui pipeline yang mungkin tidak memahami entiti bernama. Gunakan Semua bukan ASCII apabila menyasarkan sistem ASCII sahaja yang ketat (pelayan e-mel lama, API yang rosak).

Kenapa ini escape `'` sebagai `&#39;` dan bukan `&apos;`?

&apos; adalah sah dalam XML dan HTML5, tetapi tidak dalam HTML 4.01 — pelayar lama memaparkannya sebagai teks literal '. Rujukan berangka &#39; berfungsi di mana-mana. Penyahkod menerima &apos; sebagai input untuk keserasian.

Adakah emoji dan aksara CJK akan terselamat?

Ya. Pengekod mengiterasi codepoint (bukan unit kod UTF-16), supaya emoji seperti 🎉 (U+1F389) menjadi &#127881; apabila diekod dan round-trip dengan betul melalui penyahkodan. Sama untuk CJK (中文 → &#20013;&#25991; dalam mod berangka).

Adakah selamat untuk membenamkan input pengguna terus ke dalam HTML selepas pengekodan?

Untuk badan dan atribut HTML — ya, dengan mod Minimal. Untuk konteks URL (href="...") anda juga memerlukan pengekodan URL. Untuk JavaScript atau CSS sebaris, pengekodan HTML mahupun URL tidak mencukupi — gunakan enjin templat yang sesuai yang memahami konteks tersebut. Jangan sekali-kali tampal input pengguna yang tidak ber-escape ke dalam blok <script>.

Adakah apa-apa dihantar ke pelayan anda?

Tidak. Pengekod, penyahkod, dan jadual carian entiti bernama semuanya berjalan dalam JavaScript pada peranti anda. Buka DevTools → Network dan anda akan melihat sifar permintaan keluar semasa enkod atau nyahkod. Tampal rahsia, data pelanggan, templat dalaman — tiada apa-apa meninggalkan komputer riba anda.