Was sind HTML Entities?
HTML Entities sind Zeichencodes, die Sonderzeichen in HTML darstellen. Sie werden verwendet, wenn Zeichen nicht direkt im HTML-Code stehen können oder sollten.
Die wichtigsten HTML Entities
| Zeichen | Entity | Numeric | Beschreibung |
|---|---|---|---|
| < | < | < | Kleiner als |
| > | > | > | Größer als |
| & | & | & | Ampersand |
| " | " | " | Anführungszeichen |
| ' | ' | ' | Apostroph |
| |   | Geschütztes Leerzeichen |
Häufig verwendete Entities
Typografie
- — — Em-Dash (Gedankenstrich)
- – – En-Dash (Bis-Strich)
- … … Auslassungspunkte
- © © Copyright
- ® ® Registered
- ™ ™ Trademark
Währungen
- € € Euro
- £ £ Pfund
- ¥ ¥ Yen
- ¢ ¢ Cent
Mathematik
- × × Multiplikation
- ÷ ÷ Division
- ± ± Plus/Minus
- ≠ ≠ Ungleich
- ≤ ≤ Kleiner gleich
- ≥ ≥ Größer gleich
Entity-Formate
- Named: € – lesbar, aber nicht für alle Zeichen
- Decimal: € – Unicode Codepoint dezimal
- Hexadecimal: € – Unicode Codepoint hex
Wann Entities verwenden?
Pflicht
- < und > – Sonst als HTML-Tags interpretiert
- & – Sonst als Entity-Start interpretiert
- " in Attributen – Sonst Attribut-Ende
Empfohlen
- Sonderzeichen bei unbekannter Kodierung
- Nicht-darstellbare Zeichen (geschütztes Leerzeichen)
- User Input – XSS-Schutz!
Entities in JavaScript
// Encoding
function escapeHtml(text) {
return text
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
// Decoding (DOM-Methode)
function decodeHtml(html) {
const txt = document.createElement('textarea');
txt.innerHTML = html;
return txt.value;
}Häufig gestellte Fragen
Muss ich mit UTF-8 noch Entities nutzen?
Für Umlaute (ä, ö, ü) nicht mehr nötig, wenn UTF-8 korrekt eingestellt ist. Aber <, >, & müssen immer kodiert werden!
Was ist XSS und wie schützen Entities?
XSS (Cross-Site Scripting) ist ein Angriff, bei dem Schadcode eingeschleust wird. Durch Entity-Encoding wird <script> zu harmlosem Text.
Gibt es zu viele Entities?
Ja, über 2000! Die meisten sind historisch. In der Praxis braucht man nur etwa 20-30 regelmäßig. Unicode/UTF-8 hat viele Entities überflüssig gemacht.