UltKit

Codificare și decodificare entități HTML

Codificați caracterele pe care HTML le interpretează drept marcaj și, opțional, toate caracterele non-ASCII sau transformați entități precum é și — înapoi în text simplu. Ambele operații rulează în browser, iar textul decodificat nu este afișat niciodată ca HTML activ.

Mod
Stil de entitate
Escapare

0 caractere · 0 cuvinte · 0 rânduri

0 caractere · 0 cuvinte · 0 rânduri

Funcționează integral în această filă a browserului. Textul dvs. nu este încărcat și nici stocat.

Caractere uzuale și entitățile lor

Formele denumită, zecimală și hexazecimală se decodifică toate în același caracter. Codificatorul cunoaște 216 entități denumite uzuale; decodificatorul înțelege toate referințele denumite din standardul HTML.

CaracterDenumitZecimalHex
&&&&
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;
(spațiu neseparabil)&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;

De la 252 de entități în HTML 4 la 2.231 în HTML5

O referință de caracter este o modalitate de a scrie un caracter folosind doar ASCII. Referințele numerice funcționează pentru orice punct de cod Unicode, în zecimal (&#233;) sau în hexazecimal (&#xE9;). Referințele cu nume sunt mai ușor de reținut: HTML 4 a definit 252, care acoperă litere Latin-1 precum &eacute;, litere grecești, simboluri matematice și semne tipografice precum &mdash; și &hellip;. Curios, &apos; nu se număra printre ele; provine din XML și a devenit valid în HTML abia odată cu HTML5.

HTML5 a extins lista la 2.231 de referințe de caractere cu nume, preluând setul de entități MathML, astfel că nume precum &check;, &bigstar; și &NotEqualTilde; funcționează acum în toate browserele actuale. Numărul include variante vechi fără punct și virgulă final, precum &amp și &copy, pe care parserele le acceptă încă din motive de compatibilitate, dar pe care nu ar trebui să le scrieți. Encoderul de aici produce numele HTML 4, larg acceptate, plus &apos;, iar pentru restul folosește o referință numerică; decodorul trimite textul către parserul propriu al browserului, deci înțelege toate cele 2.231 de nume.

Ce trebuie codificat și când codificarea nu este suficientă

Doar & < > " ' este setarea pentru uz obișnuit: scapă cele cinci caractere care pot încheia un nod de text sau un atribut între ghilimele, ceea ce ajunge pentru a afișa un exemplu de cod într-o pagină sau pentru a introduce în siguranță text de la utilizatori în HTML. Și orice caracter non-ASCII transformă și é, € și emoji în referințe, pentru cazurile rare în care canalul nu poate transporta UTF-8, precum unele șabloane vechi de e-mail sau sisteme care strică codificările. Cu nume, Zecimal și Hex schimbă doar felul în care este scrisă o referință; toate trei se decodează în același caracter. O pagină salvată în UTF-8 nu are nevoie de entități pentru literele cu diacritice.

Escaparea protejează doar contextul HTML, nimic altceva. Textul inserat într-un bloc script, într-un handler de eveniment inline precum onclick, într-un atribut style sau într-un href care poate începe cu javascript: cere alt tratament, iar codarea în entități nu previne singură cross-site scripting în aceste cazuri. Framework-uri precum React scapă textul implicit, așa că dubla escapare este eroarea mai frecventă în aplicațiile moderne: utilizatorii văd &amp; acolo unde ar trebui să fie un ampersand. Pentru a elimina complet etichetele, convertiți codul cu HTML în TXT; pentru escaparea în URL-uri folosiți Codare și decodare URL.

Întrebări frecvente

Ce caractere trebuie codificate în HTML?
În text, & și < sunt esențiale, iar > se scapă prin convenție. Într-o valoare de atribut, scăpați și ghilimeaua care o delimitează. Scăparea tuturor celor cinci acoperă ambele cazuri.
Care este diferența dintre &nbsp; și un spațiu obișnuit?
&nbsp; este spațiul fără întrerupere, U+00A0. Arată ca un spațiu, dar împiedică ruperea rândului în acel loc și nu este comprimat atunci când apar mai multe la rând, spre deosebire de spațiile obișnuite din HTML.
De ce pagina mea afișează &amp; în loc de semnul „&”?
Textul a fost scăpat de două ori: o dată în datele dvs. și încă o dată de șablon sau de framework. Păstrați textul brut și lăsați un singur nivel, de obicei șablonul, să facă escaparea la afișare.
Este sigur să decodific aici HTML dintr-o sursă nesigură?
Da. Decodorul interpretează intrarea ca simplu conținut text, așa că nu se creează etichete, scripturile nu rulează și imaginile nu se încarcă. Doar referințele de entități sunt transformate în caractere.
Care sunt mai bune: entitățile cu nume sau cele numerice?
Cele cu nume se citesc mai ușor, cele numerice funcționează pentru orice caracter și în orice parser XML. În XML fără DTD, doar &amp;, &lt;, &gt;, &quot; și &apos; sunt predefinite.