HTML-entiteter: kod og afkod
Kod de tegn, som HTML opfatter som markup, og eventuelt også alle ikke-ASCII-tegn, eller omdan entiteter som é og — tilbage til almindelig tekst. Begge retninger kører i din browser, og afkodet input bliver aldrig vist som aktiv HTML.
0 tegn · 0 ord · 0 linjer
0 tegn · 0 ord · 0 linjer
Kører udelukkende i denne browserfane. Din tekst bliver aldrig uploadet eller gemt.
Almindelige tegn og deres entiteter
Navngivne, decimale og hexadecimale former afkodes alle til samme tegn. Koderen kender 216 almindelige navngivne entiteter; afkoderen forstår alle navngivne referencer i HTML-standarden.
| Tegn | Navngivet | Decimal | Hex |
|---|---|---|---|
& | & | & | & |
< | < | < | < |
> | > | > | > |
" | " | " | " |
' | ' | ' | ' |
(hårdt mellemrum) | |   |   |
© | © | © | © |
® | ® | ® | ® |
™ | ™ | ™ | ™ |
€ | € | € | € |
£ | £ | £ | £ |
¥ | ¥ | ¥ | ¥ |
— | — | — | — |
– | – | – | – |
… | … | … | … |
« | « | « | « |
» | » | » | » |
° | ° | ° | ° |
× | × | × | × |
÷ | ÷ | ÷ | ÷ |
é | é | é | é |
π | π | π | π |
→ | → | → | → |
😀 | — | 😀 | 😀 |
Fra 252 entiteter i HTML 4 til 2.231 i HTML5
En tegnreference er en måde at skrive et tegn på kun med ASCII. Numeriske referencer fungerer for ethvert Unicode-kodepunkt, enten decimalt (é) eller hexadecimalt (é). Navngivne referencer er lettere at huske: HTML 4 definerede 252 af dem, som dækker Latin-1-bogstaver som é, græske bogstaver, matematiske symboler og typografiske tegn som — og …. Mærkeligt nok var ' ikke blandt dem; den stammer fra XML og blev først gyldig HTML med HTML5.
HTML5 udvidede listen til 2.231 navngivne tegnreferencer og optog MathML-entitetssættet, så navne som ✓, ★ og ≂̸ nu virker i alle aktuelle browsere. Tallet omfatter ældre stavemåder uden afsluttende semikolon, f.eks. & og ©, som parsere stadig accepterer af hensyn til kompatibilitet, men som du ikke bør skrive. Encoderen her producerer de udbredt understøttede HTML 4-navne plus ' og falder tilbage til en numerisk reference for alt andet. Decoderen sender teksten til browserens egen parser, så den forstår alle 2.231 navne.
Hvad du skal kode, og hvornår kodning ikke er nok
Kun & < > " ' er indstillingen til hverdagsbrug: den escaper de fem tegn, der kan afslutte en tekstnode eller en attribut i anførselstegn, hvilket er nok til at vise et kodeeksempel på en side eller placere brugertekst sikkert i HTML. Også alle tegn uden for ASCII gør også é, € og emoji til referencer, til de sjældne kanaler, der ikke kan håndtere UTF-8, f.eks. nogle ældre e-mailskabeloner eller systemer, der ødelægger kodninger. Named, Decimal og Hex ændrer kun, hvordan en reference staves; alle tre afkodes til samme tegn. En side gemt som UTF-8 behøver ingen entiteter til bogstaver med accent.
Escaping beskytter kun HTML-konteksten og intet andet. Tekst, der indsættes i en script-blok, en inline-hændelseshandler som onclick, en style-attribut eller en href, der kan begynde med javascript:, kræver anden håndtering, og entitetskodning alene forhindrer ikke cross-site scripting dér. Frameworks som React escaper tekst som standard, så dobbelt escaping er den hyppigere fejl i moderne apps: brugerne ser &, hvor der skulle stå et og-tegn. Hvis du vil fjerne tags helt, kan du konvertere markup med HTML til TXT; til escaping i URL'er kan du bruge URL-kodning og -afkodning.
Ofte stillede spørgsmål
- Hvilke tegn skal kodes i HTML?
- I tekst er & og < de vigtigste, og > escapes efter konvention. I en attributværdi skal du også escape det anførselstegn, der afgrænser den. Escaper du alle fem, er begge tilfælde dækket.
- Hvad er forskellen på og et almindeligt mellemrum?
er det ubrydelige mellemrum, U+00A0. Det ligner et mellemrum, men forhindrer linjeskift på det sted og slås ikke sammen, når flere står ved siden af hinanden, i modsætning til almindelige mellemrum i HTML.- Hvorfor viser min side & i stedet for et og-tegn?
- Teksten er blevet escapet to gange: én gang i dine data og igen af din skabelon eller dit framework. Gem rå tekst, og lad ét lag, normalt skabelonen, escape ved output.
- Er det sikkert at afkode HTML fra en kilde, jeg ikke stoler på?
- Ja. Decoderen fortolker input som ren tekst, så der oprettes ingen tags, scripts kører ikke, og billeder indlæses ikke. Kun entitetsreferencer omdannes til tegn.
- Er navngivne eller numeriske entiteter bedst?
- Navngivne er nemmere at læse, mens numeriske virker for alle tegn og i alle XML-parsere. I XML uden DTD er kun
&,<,>,"og'foruddefinerede.