Pengekod / Penyahkod Entiti HTML

Enkod dan dekod entiti HTML untuk paparan selamat dalam halaman web

Pilihan Pengekodan

Semua proses enkod dan dekod dilakukan secara setempat dalam penyemak imbas anda.

Advertisement

Panduan terperinci

Entiti HTML: mod pengekodan, penyahkodan dan konteks

Pilih rujukan bernama, perpuluhan atau heksadesimal serta fahami mod khas, satu laluan penyahkodan, Unicode dan XML.

Kali terakhir disahkan: Versi Markdown (untuk AI)

Angka utama sepintas lalu

Mod khas sahaja
Lima aksara
Ampersand, kurang daripada, lebih daripada, petikan berganda dan apostrof.
Bentuk output
Bernama, perpuluhan atau heksadesimal
Mod semua aksara bernama menggunakan rujukan perpuluhan apabila jadual nama setempat tiada padanan.
Kelakuan penyahkodan
Satu laluan penghurai HTML
Pelayar menyahkod rujukan; ia tidak mengesahkan atau menapis input.
Panjang dipaparkan
Unit kod UTF-16
Emoji seperti 🙂 dikira sebagai dua unit, bukan satu simbol yang kelihatan.

Pilih mod dan tukar

Tampal teks, pilih jenis rujukan serta mod khas sahaja atau semua aksara, kemudian tekan Encode. Decode menggunakan penghurai rujukan HTML pelayar tanpa bergantung pada butang radio mod pengekodan. Swap menukar input dengan output; Copy menyalin hasil.

Mod khas sahaja menukar lima aksara terpelihara di atas. Mod semua aksara bergerak mengikut titik kod Unicode. Bentuk bernama menggunakan pemetaan terbina dalam yang kecil, kemudian rujukan perpuluhan bagi aksara lain; ia tidak mencari seluruh jadual nama HTML.

Contoh halaman sebenar

Input Pilihan pengekodan Hasil
<>& Khas sahaja, bernama &lt;&gt;&amp;
🙂 Semua, perpuluhan &#128578;
🙂 Semua, heksadesimal &#x1F642;
©A Semua, bernama &copy;&#65;
A B Semua, bernama &#65;&#32;&#66;

Ruang biasa menjadi &#32; dalam mod semua aksara bernama. U+00A0, ruang tidak putus, menjadi &nbsp;. Kedua-duanya berbeza. Pengekod mengendalikan emoji sebagai satu titik kod tetapi statistik panjang menggunakan dua unit UTF-16.

Penyahkodan dan pengekodan berulang

Menyahkod &amp;lt; menghasilkan teks rujukan &lt;, bukan tanda kurang daripada dalam laluan yang sama. Mengekod &lt; sekali lagi menghasilkan &amp;lt;. Semak lapisan yang diperlukan sasaran, bukan mengulang butang tanpa memeriksa.

Decode tidak membuang tag: <b>A</b> kekal sebagai teks itu dalam kotak output. Rujukan tidak sah mengikuti peraturan penghurai HTML pelayar; ini bukan pengesah ketat. Sesetengah nilai tidak boleh dipulihkan tepat, termasuk rujukan null yang menjadi aksara pengganti.

Konteks, XML dan batasan

Teks HTML, atribut berpetikan, URL, JavaScript dan CSS ialah konteks output berbeza. Alat ini menukar rujukan, bukan memilih pelepasan yang sesuai atau menapis sebarang markup. Gunakan mekanisme output rangka kerja yang sesuai dengan destinasi.

Set entiti HTML dan XML berbeza. XML hanya mentakrifkan amp, lt, gt, quot dan apos terlebih dahulu; nbsp dan copy memerlukan pengisytiharan. Sintaks angka tidak menjadikan setiap nilai aksara XML sah. Gunakan pelepasan dan pengesahan khusus XML.

Pemprosesan berlaku setempat tanpa memuat naik teks untuk penukaran. Input kosong atau ruang sahaja ditolak. Kiraan rujukan yang dipaparkan berdasarkan corak teks, bukan bukti setiap calon sah. Muat turun menulis fail .html; sambungannya tidak membuktikan kandungan selamat untuk dirender.

Gunakan Base64 untuk perwakilan bait kepada teks atau teks ke heksadesimal untuk melihat bait UTF-8. Kedua-duanya bukan pengganti pelepasan HTML.

Advertisement

Soalan Lazim

Apakah itu entiti HTML?

Entiti HTML ialah kod khas yang bermula dengan & dan berakhir dengan ; yang digunakan untuk memaparkan aksara terpelihara atau khas dalam HTML. Contohnya, &lt; dipaparkan sebagai < dan &amp; dipaparkan sebagai &. Ia menghalang pelayar daripada mentafsir aksara sebagai kod HTML.

Bilakah saya perlu menggunakan pengekodan entiti HTML?

Gunakan pengekodan entiti apabila konteks teks HTML sasaran memerlukannya. Nilai atribut, URL, JavaScript dan CSS mempunyai peraturan berbeza; alat ini tidak memilih konteks atau menapis markup.

Apakah perbezaan antara entiti bernama dan numerik?

Rujukan bernama menggunakan nama aksara; rujukan perpuluhan dan heksadesimal menggunakan nombor titik kod Unicode. Sintaks angka tidak menjamin setiap nilai sah atau kekal sama: HTML mempunyai peraturan bagi nilai tidak sah dan sesetengah nilai kawalan lama.

Adakah data teks saya dihantar ke mana-mana pelayan?

Tidak, semua proses enkod dan dekod entiti HTML berlaku sepenuhnya dalam penyemak imbas anda. Data anda tidak pernah meninggalkan peranti anda, menjadikan alat ini benar-benar selamat untuk kod HTML dan kandungan sensitif.

Patutkah saya mengekod semua aksara atau hanya aksara khas?

Secara umum, enkod hanya aksara khas (< > & " ') untuk mengekalkan saiz fail kecil dan kandungan mudah dibaca dalam sumber HTML. Mengekod semua aksara akan meningkatkan saiz fail dengan ketara dan hanya diperlukan dalam situasi tertentu seperti menghalang serangan suntikan teks.

Bolehkah saya menyahkod entiti yang sudah ada dalam HTML saya?

Ya, fungsi dekod menukar entiti HTML kembali kepada aksara asalnya. Ini berguna untuk membaca kandungan yang telah dienkod, membuat suntingan, atau menukar antara format pengekodan yang berbeza.

Apa yang berlaku jika saya mengekod teks dua kali?

Pengekodan berganda akan mengekod entiti itu sendiri. Contohnya, mengekod &lt; sekali lagi menghasilkan &amp;lt; yang dipaparkan sebagai &lt; dalam pelayar dan bukannya <. Sentiasa semak sama ada teks sudah dienkod sebelum mengekod semula.

Jenis entiti manakah yang patut saya gunakan?

Entiti bernama paling mudah dibaca dan disyorkan untuk aksara biasa. Gunakan entiti numerik untuk aksara yang tiada padanan bernama. Entiti heksadesimal sering digemari oleh pembangun yang bekerja dengan titik kod Unicode. Ketiga-tiganya berfungsi dengan baik dalam pelayar moden.

Adakah pengekodan entiti HTML mencegah serangan XSS?

Pengekodan entiti bergantung pada konteks output dan bukan penapis XSS. Ia tidak menjadikan sebarang URL, JavaScript, CSS atau markup selamat. Gunakan mekanisme pelepasan atau penapisan yang diperlukan oleh konteks sasaran.

Bolehkah saya gunakan ini untuk dokumen XML?

Set entiti HTML dan XML tidak sama. XML hanya mentakrifkan amp, lt, gt, quot dan apos terlebih dahulu; nama seperti nbsp dan copy memerlukan pengisytiharan. Gunakan pelepasan khusus XML dan sahkan hasil termasuk sekatan aksaranya.

Apakah perbezaan antara pengekodan HTML dan pengekodan URL?

Pengekodan HTML menggunakan entiti seperti &lt; untuk paparan dalam dokumen HTML. Pengekodan URL menggunakan percent-encoding seperti %3C untuk alamat web. Kedua-duanya mempunyai tujuan berbeza: pengekodan HTML untuk paparan kandungan, pengekodan URL untuk penghantaran data dalam URL.

Adakah terdapat aksara yang tidak boleh dienkod?

Bukan setiap nilai Unicode boleh dipulihkan tepat melalui rujukan HTML. Contohnya rujukan null menjadi aksara pengganti, manakala nilai tidak sah mengikut peraturan penghurai. Alat ini menukar teks HTML, bukan mengesahkan Unicode atau XML.

Sumber rujukan

  1. WHATWG — HTML named character references
  2. WHATWG — Character reference parsing
  3. W3C — XML predefined entities
  4. OWASP — Context-dependent output encoding

Panduan ini menerangkan peraturan yang diterbitkan dalam bahasa mudah. Ia bukan nasihat kewangan, undang-undang atau rasmi — peraturan boleh berubah, jadi sahkan dengan agensi yang dipautkan di atas sebelum membuat keputusan.

Advertisement