UltKit

Encode & Decode Entitas HTML

Escape karakter yang dianggap HTML sebagai markup, dan bila perlu juga setiap karakter non-ASCII, atau ubah entitas seperti é dan — kembali menjadi teks biasa. Kedua arah berjalan di browser Anda, dan input yang di-decode tidak pernah dirender sebagai HTML aktif.

Mode
Gaya entitas
Escape

0 karakter · 0 kata · 0 baris

0 karakter · 0 kata · 0 baris

Berjalan sepenuhnya di tab browser ini. Teks Anda tidak pernah diunggah atau disimpan.

Karakter umum dan entitasnya

Bentuk bernama, desimal, dan heksadesimal semuanya di-decode menjadi karakter yang sama. Encoder mengenal 216 entitas bernama yang umum; decoder memahami setiap referensi bernama dalam standar HTML.

KarakterBernamaDesimalHex
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(spasi tanpa jeda)&nbsp;&#160;&#xA0;
©&copy;&#169;&#xA9;
®&reg;&#174;&#xAE;
™&trade;&#8482;&#x2122;
€&euro;&#8364;&#x20AC;
£&pound;&#163;&#xA3;
¥&yen;&#165;&#xA5;
—&mdash;&#8212;&#x2014;
–&ndash;&#8211;&#x2013;
…&hellip;&#8230;&#x2026;
«&laquo;&#171;&#xAB;
»&raquo;&#187;&#xBB;
°&deg;&#176;&#xB0;
×&times;&#215;&#xD7;
÷&divide;&#247;&#xF7;
é&eacute;&#233;&#xE9;
π&pi;&#960;&#x3C0;
→&rarr;&#8594;&#x2192;
😀—&#128512;&#x1F600;

Dari 252 entitas di HTML 4 menjadi 2.231 di HTML5

Referensi karakter adalah cara menuliskan sebuah karakter hanya dengan ASCII. Referensi numerik berlaku untuk code point Unicode apa pun, dalam desimal (&#233;) atau heksadesimal (&#xE9;). Referensi bernama lebih mudah diingat: HTML 4 mendefinisikan 252 di antaranya, mencakup huruf Latin-1 seperti &eacute;, huruf Yunani, simbol matematika, dan tanda tipografi seperti &mdash; dan &hellip;. Uniknya, &apos; tidak termasuk di dalamnya; entitas ini berasal dari XML dan baru menjadi HTML yang valid sejak HTML5.

HTML5 memperluas daftarnya menjadi 2.231 referensi karakter bernama dengan menyerap set entitas MathML, sehingga nama seperti &check;, &bigstar;, dan &NotEqualTilde; kini berfungsi di semua browser terkini. Jumlah itu termasuk ejaan lama tanpa titik koma penutup, seperti &amp dan &copy, yang masih diterima parser demi kompatibilitas tetapi sebaiknya tidak Anda tulis. Encoder di sini menghasilkan nama-nama HTML 4 yang didukung luas ditambah &apos;, dan beralih ke referensi numerik untuk karakter lainnya; decoder menyerahkan teks ke parser milik browser sendiri, sehingga memahami seluruh 2.231 nama tersebut.

Apa yang perlu di-escape, dan kapan escape saja tidak cukup

Hanya & < > " ' adalah pengaturan untuk pekerjaan sehari-hari: pengaturan ini meng-escape lima karakter yang dapat mengakhiri text node atau atribut berkutip, dan itu sudah cukup untuk menampilkan contoh kode di halaman atau menempatkan teks pengguna dengan aman di dalam HTML. Juga setiap karakter non-ASCII mengubah é, €, dan emoji menjadi referensi juga, untuk saluran langka yang tidak dapat membawa UTF-8, seperti sebagian template email lama atau sistem yang merusak encoding. Bernama, Desimal, dan Hex hanya mengubah cara referensi dieja; ketiganya di-decode menjadi karakter yang sama. Halaman yang disimpan sebagai UTF-8 tidak memerlukan entitas untuk huruf beraksen.

Escape hanya melindungi konteks HTML, tidak lebih. Teks yang disisipkan ke blok script, event handler inline seperti onclick, atribut style, atau href yang mungkin diawali javascript: memerlukan penanganan berbeda, dan encoding entitas saja tidak mencegah cross-site scripting di sana. Framework seperti React meng-escape teks secara default, sehingga escape ganda justru menjadi bug yang lebih umum di aplikasi modern: pengguna melihat &amp; di tempat yang seharusnya berisi tanda ampersand. Untuk menghapus tag sepenuhnya, konversikan markup dengan HTML ke TXT; untuk escape di dalam URL, gunakan Encode & Decode URL.

Pertanyaan yang sering diajukan

Karakter apa saja yang wajib di-escape dalam HTML?
Di dalam teks, & dan < adalah yang terpenting, dan > di-escape karena kebiasaan. Di dalam nilai atribut, escape juga tanda kutip yang membatasinya. Meng-escape kelima karakter mencakup kedua kasus.
Apa perbedaan &nbsp; dengan spasi biasa?
&nbsp; adalah spasi tanpa jeda, U+00A0. Tampilannya seperti spasi, tetapi mencegah pemenggalan baris di titik itu dan tidak diringkas ketika beberapa muncul berurutan, berbeda dengan spasi biasa di HTML.
Mengapa halaman saya menampilkan &amp; alih-alih tanda ampersand?
Teks di-escape dua kali: sekali di data Anda dan sekali lagi oleh template atau framework. Simpan teks mentah dan biarkan satu lapisan, biasanya template, yang melakukan escape saat output.
Apakah aman men-decode entitas HTML dari sumber yang tidak tepercaya di sini?
Ya. Decoder mengurai input sebagai konten teks biasa, sehingga tidak ada tag yang dibuat, script tidak berjalan, dan gambar tidak dimuat. Hanya referensi entitas yang diubah menjadi karakter.
Mana yang lebih baik, entitas HTML bernama atau numerik?
Entitas bernama lebih mudah dibaca, sedangkan entitas numerik berlaku untuk setiap karakter dan di setiap parser XML. Dalam XML tanpa DTD, hanya &amp;, &lt;, &gt;, &quot;, dan &apos; yang sudah didefinisikan.