HTML Entity Encoder
Text in numerische Codes umwandeln – für E-Mail-Spam-Schutz, Datenschutz und mehr.
Was ist ein Entity Encoder?
Ein Entity Encoder wandelt jeden einzelnen Buchstaben eines Textes in seinen
numerischen HTML-Entity-Code um. Aus dem Buchstaben A wird zum Beispiel
A - das ist der ASCII-Code für "A".
Der Browser zeigt den Text ganz normal an, aber im Quellcode steht nur eine Zahlenfolge. Das macht es für einfache Bots und Crawler schwieriger, den eigentlichen Inhalt zu erkennen.
Das ist ObfuskationAbsichtliche Verschleierung von Programmcode oder Daten, keine echte Verschlüsselung! Der Text ist nicht "geheim" - jeder Browser wandelt die Codes automatisch zurück. Der Schutz funktioniert nur gegen simple Skripte, die den Quellcode nach bestimmten Mustern durchsuchen.
Entity Encoder Tool
Probier es aus: Gib einen Text ein und klicke auf "Encode". Den Output kannst du direkt in dein HTML einfügen.
Entity Decoder Tool
Hier kannst du Entity-Codes wieder in lesbaren Text zurückverwandeln - praktisch zum Überprüfen oder wenn du fremden Code analysierst.
Live-Vorschau
So sieht der encoded Text im Browser aus – identisch zum Original:
Original
info@example.com
Entity-kodiert
info@example.com
Beide Zeilen sehen identisch aus – aber im Quellcode steht bei der zweiten nur Zahlencode:
info@example.com
Wofür kann ich das nutzen?
Der Entity Encoder eignet sich für verschiedene Szenarien:
1. E-Mail-Adressen vor Spam-Bots schützen
Das häufigste Einsatzgebiet: Spam-Bots durchsuchen Websites nach dem @-Zeichen
oder
mailto:-Links. Wenn du deine E-Mail-Adresse in Entities umwandelst, finden
einfache
Bots sie nicht mehr.
<!-- Statt -->
<a href="mailto:info@example.com">info@example.com</a>
<!-- Verwendest du -->
<a href="mailto:...">
...
</a>
2. Telefonnummern verschleiern
Auch Telefonnummern werden von Bots gesammelt. Der gleiche Trick funktioniert hier genauso gut.
3. Datenschutzerklärungen und Impressum
Pflichtangaben wie Name und Adresse müssen auf der Website stehen, aber das bedeutet nicht, dass sie für jeden Crawler lesbar sein müssen.
4. Unicode- und Sonderzeichen sicher einbetten
Manche Zeichen machen in bestimmten Kontexten Probleme. Mit Entity-Kodierung stellst du sicher, dass sie überall korrekt dargestellt werden - unabhängig von der Zeichenkodierung der Datei.
5. JavaScript-Grundlagen lernen
Der Encoder ist ein perfektes Mini-Projekt, um charCodeAt(), Schleifen und
String-Manipulation zu üben.
Echte Sicherheitsanforderungen! Wenn du sensible Daten wirklich schützen musst, brauchst du serverseitige Lösungen, Captchas oder Kontaktformulare.
Code verstehen
Schauen wir uns an, wie Encoder und Decoder funktionieren. Das Script nutzt moderne
JavaScript-Patterns wie querySelectorAll und addEventListener.
Der Encoder-Code
document.querySelectorAll('.entity-encoder').forEach(block => {
const input = block.querySelector('.code-input');
const output = block.querySelector('.code-output');
const encodeBtn = block.querySelector('.encode-btn');
// Encode-Funktion
function encodeText(str) {
let encoded = '';
for (let i = 0; i < str.length; i++) {
encoded += '&#' + str.charCodeAt(i) + ';';
}
return encoded;
}
// Encode Button
encodeBtn.addEventListener('click', () => {
output.value = encodeText(input.value);
});
});
Schritt 1: Alle Encoder-Boxen finden
document.querySelectorAll('.entity-encoder').forEach(block => {
Statt einer einzelnen ID suchen wir nach allen Elementen mit der Klasse
.entity-encoder. Das hat einen großen Vorteil: Du könntest mehrere Encoder auf
einer Seite haben, und jeder funktioniert unabhängig.
querySelectorAll('.entity-encoder')- Findet alle Elemente mit dieser Klasse.forEach(block => { })- Führt den Code für jedes gefundene Element ausblock- Ist die aktuelle Encoder-Box in der Schleife
Schritt 2: Elemente innerhalb der Box finden
const input = block.querySelector('.code-input');
const output = block.querySelector('.code-output');
const encodeBtn = block.querySelector('.encode-btn');
Mit block.querySelector() suchen wir nur innerhalb dieser einen
Box
- nicht im gesamten Dokument. So bekommt jede Box ihre eigenen Referenzen.
Schritt 3: Die Encode-Funktion
function encodeText(str) {
let encoded = '';
for (let i = 0; i < str.length; i++) {
encoded += '&#' + str.charCodeAt(i) + ';';
}
return encoded;
}
Die eigentliche Umwandlung passiert hier:
for (let i = 0; i < str.length; i++)- Geht jeden Buchstaben durchstr.charCodeAt(i)- Holt den Unicode-Wert des Zeichens an Positioni'&#' + ... + ';'- Baut daraus den Entity-Code (z.B.Afür "A")encoded +=- Hängt jeden Code an den Ergebnis-String an
Der Buchstabe A hat den Unicode-Wert 65. Also wird daraus A.
Schritt 4: Event Listener für den Button
encodeBtn.addEventListener('click', () => {
output.value = encodeText(input.value);
});
Statt onclick="..." im HTML nutzen wir addEventListener. Das ist
moderner und trennt HTML von JavaScript sauber.
addEventListener('click', ...)- Reagiert auf Klicks() => { }- Eine Arrow FunctionKurzschreibweise für anonyme Funktionen in JavaScript, die beim Klick ausgeführt wirdinput.value- Holt den eingegebenen Textoutput.value = ...- Schreibt das Ergebnis ins Output-Feld
Der Decoder-Code
Der Decoder macht das Gegenteil - er wandelt Entity-Codes zurück in lesbare Zeichen. Dafür nutzt er einen regulären AusdruckPattern zum Suchen und Ersetzen von Text (RegEx).
function decodeEntities(str) {
return str.replace(/&#(\d+);/g, (match, dec) => {
return String.fromCharCode(dec);
});
}
Der reguläre Ausdruck erklärt
/&#(\d+);/g
Dieser Ausdruck findet alle Entity-Codes im Text:
&#- Sucht nach dem Literal "&#"(\d+)- Fängt eine oder mehrere Ziffern ein (die Klammern "merken" sich den Wert);- Sucht nach dem abschließenden Semikolong- "Global" - findet alle Vorkommen, nicht nur das erste
Die replace-Callback-Funktion
str.replace(/&#(\d+);/g, (match, dec) => {
return String.fromCharCode(dec);
});
replace() kann statt einem Ersetzungstext auch eine Funktion bekommen:
match- Der gesamte gefundene Text (z.B.A)dec- Der Inhalt der Klammer, also nur die Zahl (z.B.65)String.fromCharCode(dec)- Wandelt die Zahl zurück in ein Zeichen (z.B.A)
Das Gegenstück: charCodeAt() macht aus Zeichen Zahlen,
String.fromCharCode() macht aus Zahlen wieder Zeichen.
Bonus: Unicode verstehen
Hinter charCodeAt() und String.fromCharCode() steckt das
Unicode-System - ein internationaler Standard, der jedem Zeichen eine
eindeutige Nummer zuweist.
// Einige Beispiele:
'A'.charCodeAt(0) // → 65
'a'.charCodeAt(0) // → 97
'@'.charCodeAt(0) // → 64
'€'.charCodeAt(0) // → 8364
'😀'.charCodeAt(0) // → 55357 (Emojis sind komplizierter!)
Die ersten 128 Zeichen (0-127) sind der klassische ASCII-Zeichensatz - Buchstaben, Zahlen und Sonderzeichen. Alles darüber hinaus ist "erweitertes Unicode" für Umlaute, Sonderzeichen anderer Sprachen und Emojis.
Großbuchstaben (65-90) und Kleinbuchstaben (97-122) liegen
genau
32 Positionen auseinander. Deshalb funktioniert 'A'.charCodeAt(0) + 32 →
97 → 'a'!
HTML für das Tool
Falls du Encoder und Decoder auf deiner eigenen Seite einbauen möchtest, hier ist das vollständige HTML und JavaScript:
HTML-Struktur
<!-- Entity Encoder -->
<div class="code-block entity-encoder">
<div class="code-header">
<span class="code-lang">Entity Encoder</span>
<div class="code-actions">
<button class="code-copy encode-btn">Encode</button>
<button class="code-copy copy-btn">Kopieren</button>
</div>
</div>
<textarea class="code-input" placeholder="Text eingeben..."></textarea>
<textarea class="code-output" placeholder="Encoded..." readonly></textarea>
</div>
<!-- Entity Decoder -->
<div class="code-block entity-decoder">
<div class="code-header">
<span class="code-lang">Entity Decoder</span>
<div class="code-actions">
<button class="code-copy decode-btn">Decode</button>
<button class="code-copy copy-btn">Kopieren</button>
</div>
</div>
<textarea class="code-input" placeholder="Entity-Code einfügen..."></textarea>
<textarea class="code-output" placeholder="Decoded..." readonly></textarea>
</div>
JavaScript (komplett)
// Entity Encoder
document.querySelectorAll('.entity-encoder').forEach(block => {
const input = block.querySelector('.code-input');
const output = block.querySelector('.code-output');
const encodeBtn = block.querySelector('.encode-btn');
const copyBtn = block.querySelector('.copy-btn');
function encodeText(str) {
let encoded = '';
for (let i = 0; i < str.length; i++) {
encoded += '&#' + str.charCodeAt(i) + ';';
}
return encoded;
}
encodeBtn.addEventListener('click', () => {
output.value = encodeText(input.value);
output.focus();
output.select();
});
copyBtn.addEventListener('click', () => {
output.select();
document.execCommand('copy');
});
});
// Entity Decoder
document.querySelectorAll('.entity-decoder').forEach(block => {
const input = block.querySelector('.code-input');
const output = block.querySelector('.code-output');
const decodeBtn = block.querySelector('.decode-btn');
const copyBtn = block.querySelector('.copy-btn');
function decodeEntities(str) {
return str.replace(/&#(\d+);/g, (match, dec) => {
return String.fromCharCode(dec);
});
}
decodeBtn.addEventListener('click', () => {
output.value = decodeEntities(input.value);
output.focus();
output.select();
});
copyBtn.addEventListener('click', () => {
output.select();
document.execCommand('copy');
});
});
Mehr aus JavaScript
Tutorials werden geladen...