Unicode-Variationsselektoren entfernen
„Hello ❤️ world ☺️“ verliert seine 2 versteckten Selektoren und kommt als „Hello ❤ world ☺“ zurück, mit 15 statt 17 Zeichen. Buchstaben, Emojis, Satzzeichen und Leerzeichen bleiben; nur die unsichtbaren Stilschalter verschwinden. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- Hello ❤️ world ☺️
- Ergebnis
- Hello ❤ world ☺
- Länge
- 15
- Ursprüngliche Länge
- 17
- Entfernt
- 2
Unicode-Variationsselektoren sind unsichtbare Zeichen, die neben Basisglyphen stehen und Renderern mitteilen, ob Emoji-Darstellung, Textdarstellung oder eine bestimmte Glyphen-Variante gezeigt werden soll. Copy-and-Paste aus Messaging-Apps, Social Feeds und Design-Tools hinterlässt oft U+FE0F (Emoji-Stil) oder U+FE0E (Textstil) hinter Herzen, Sternen und anderen Symbolen, und CJK-Dokumente können Codepunkte des Variation Selectors Supplement für ideografische Variationssequenzen einbetten. Diese Selektoren brechen String-Gleichheitsprüfungen, blähen Längen auf, verwirren Suchindizes und erzeugen rätselhafte Diffs, wenn zwei Strings auf dem Bildschirm identisch aussehen. Dieses Werkzeug durchläuft Ihren Text nach Unicode-Codepunkten, entfernt jeden Variationsselektor in den Standardbereichen und gibt den bereinigten String mit Entfernungszähler und Änderungsflags zurück. Basisbuchstaben, Emoji, Satzzeichen und Leerzeichen bleiben — nur die unsichtbaren Schalter werden entfernt. Leere Eingabe wird mit einem klaren Validierungsfehler abgelehnt, damit Clients fehlende Felder bemerken.
So funktioniert die Entfernung von Variationsselektoren
Ein Variationsselektor ist kein sichtbarer Buchstabe; er ist ein nicht vorschiebender Codepunkt, der die Darstellung des vorangehenden Zeichens verändert. Der Hauptblock ist U+FE00 bis U+FE0F: Variation Selectors 1 bis 16. Innerhalb dieses Blocks fordert U+FE0E Text- (monochrome) Darstellung für emoji-fähige Symbole, und U+FE0F fordert Emoji- (Farb-) Darstellung.
Ein Herz mit anschließendem FE0F wird oft als buntes Emoji-Herz gerendert, während dieselbe Basis allein oder mit FE0E je nach Schrift und Plattform als schlichtes Dingbat erscheinen kann. Ein zweiter Block, U+E0100 bis U+E01EF (Variation Selectors Supplement), unterstützt ideografische Variationssequenzen für CJK-Zeichen, wenn eine bestimmte Glyphenform benötigt wird. Diese Fähigkeit entfernt beide Blöcke vollständig.
Die Implementierung durchläuft den String mit einem Codepunkt-Iterator, sodass Astralebenen-Zeichen des Supplement als Einheiten erkannt werden und nicht als gespaltene Surrogatpaare. Jeder Codepunkt in einem der VS-Bereiche wird verworfen und gezählt; jeder andere Codepunkt wird an das Ergebnis angehängt. Leere Strings scheitern vor dem Durchlauf.
Da der Pfad reines Parse über Strings ist, bleibt die Latenz bei typischen Formulargrößen unter einer Millisekunde und das veröffentlichte Kostenmodell ist analytisch statt modell-token-basiert.
Was Sie senden und was Sie zurückerhalten
Senden Sie ein einziges Pflichtfeld namens text mit dem nicht leeren String, den Sie bereinigen möchten. Zahlen und Booleans werden in ihre Dezimal- bzw. true/false-Textform umgewandelt; Objekte, Arrays, NaN und Infinity werden abgelehnt. Enthielt die Eingabe bereits keine Variationsselektoren, ist result gleich text, changed false und removed null — nützlich als No-Op-Detektor in ETL-Guards und Unit-Tests.
Klassische Prüfungen: ein Herz mit abschließendem FE0F wird zum bloßen Herz, ein Smiley mit FE0F verliert den Präsentationsselektor und behält das Basis-Emoji, gemischte Prosa, in der nur unsichtbare Selektoren verschwinden, und CJK-Text mit Supplement-Selektoren auf Basis-Ideogramme reduziert.
Wo Werkzeuge zum Entfernen von Variationsselektoren im Alltag vorkommen
Produkt- und Messaging-Teams normalisieren nutzergenerierte Inhalte, damit Gleichheitsprüfungen und Duplikaterkennung unsichtbare Präsentationsschalter ignorieren, die Nutzer nie tippen wollten. Such- und Tagging-Systeme entfernen Variationsselektoren aus Abfragen und gespeicherten Titeln, damit Filter passen, egal ob ein Herz mit FE0F von iOS oder ohne aus einem reinen Texteditor kam. Content- und Lokalisierungsteams bereiten stabile Strings für Dateinamen, URL-Segmente (ohne dediziertes Slug-Tool), E-Mail-Betreffzeilen auf wählerischen Relays und CSV-Dateien vor, die in Tools geöffnet werden, die Unicode verunstalten oder neu kodieren.
Wenn Sie später Zero-Width-Zeichen entfernen, Diakritika streichen, volle Unicode-Normalisierung (NFD/NFC) oder Emoji-Shortcode-Umwandlung brauchen, behandeln Sie das als getrennte Suchabsichten und Landings und überladen Sie diese remove-variation-selectors-Seite nicht.
Anwendungsfälle
Emoji aus Chat und Social-APIs normalisieren
Entfernen Sie FE0F/FE0E-Präsentationsselektoren, damit Herzen und Symbole plattformübergreifend gleich vergleichen, auch wenn unterschiedliche Variationsstile injiziert werden.
Häufige Fragen
Was bewirkt das Entfernen von Variationsselektoren?
Es streicht Unicode-Variationsselektor-Codepunkte (U+FE00–U+FE0F und U+E0100–U+E01EF) aus Ihrem Text — einschließlich der gängigen FE0F-Emoji- und FE0E-Text-Präsentationsselektoren — und gibt den bereinigten String plus Entfernungszähler zurück.
Was passiert bei leerem Text?
Leere Strings werden abgelehnt, damit Clients fehlende Felder bemerken, statt still ein leeres Ergebnis zu erhalten.
Werden Zero-Width-Spaces oder Akzente entfernt?
Nein. Nur Variationsselektoren werden entfernt. Zero-Width-Spaces, Bidi-Marken, kombinierende Diakritika und andere unsichtbare Zeichen brauchen eigene Werkzeuge.
Ändert sich bereits sauberer Text?
Nein. Gibt es keine Variationsselektoren, ist result gleich dem Originaltext, changed false und removed null.
Bleibt das Herz nach dem Bereinigen farbig?
Das hängt von Schriftart und Gerät ab. Ohne den Selektor, der die Emoji-Darstellung verlangt, zeigen manche Systeme das Herz als schlichtes Symbol ohne Farbe, andere weiterhin als farbiges Emoji.
Warum ist ein Text länger, als er aussieht?
Weil Variationsselektoren unsichtbar sind, aber als Zeichen zählen. „Hello ❤️ world ☺️“ wirkt wie 15 Zeichen, hat aber 17. Nach dem Entfernen stimmen sichtbare und gezählte Länge wieder überein.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/str/remove-variation-selectors \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello ❤️ world ☺️"}'const res = await fetch("https://api.kit.forhosting.com/str/remove-variation-selectors", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello ❤️ world ☺️"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/remove-variation-selectors",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello ❤️ world ☺️"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/remove-variation-selectors", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello ❤️ world ☺️"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello ❤️ world ☺️"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/remove-variation-selectors", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "Hello ❤️ world ☺️"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.remove_variation_selectors",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
So funktioniert die Entfernung von Variationsselektoren
Es gibt keinen Locale-Schalter, keine Zufallsstichprobe und keinen Netzaufruf — identische Eingabe liefert immer dasselbe JSON. Payloads über dem dokumentierten Zeichenlimit scheitern ebenfalls mit invalid_input, damit eine einzelne Anfrage den Arbeitsspeicher des Workers nicht monopolisiert.
Was Sie senden und was Sie zurückerhalten
Aliase wie input, value, data, s, message, string, content und body werden beim Anbinden älterer Clients akzeptiert. Bei Erfolg gibt die Antwort den originalen text, das bereinigte result, die length des Ergebnisses, original_length, ein Boolean changed, removed als Anzahl entfernter Variationsselektor-Codepunkte und operation mit dem Wert remove_variation_selectors zurück. Nutzen Sie das kostenlose Browser-Formular zum schnellen Einfügen und Kopieren und rufen Sie denselben Vertrag aus Skripten auf, wenn Sie CSV-Spalten, Chat-Exporte oder API-Payloads in Bulk normalisieren. Der Preis erfolgreicher API-Aufrufe ist die veröffentlichte Basis von $0.002 pro Item; Validierungsfehler einschließlich leerem Text verbrauchen kein Prepaid-Guthaben.
Wo Werkzeuge zum Entfernen von Variationsselektoren im Alltag vorkommen
Dateningenieure, die CRM-Exporte, Tabellenspalten und Social-API-Dumps bereinigen, schicken Freitextfelder oft durch einen VS-Strip, bevor sie über weiche Schlüssel joinen oder in Warehouses laden, die nach exaktem String indexieren. Da diese Fähigkeit eine reine Parse-Engine ist, gilt der API-Preis der veröffentlichten Basis von $0.002 pro erfolgreichem Item und fehlgeschlagene Validierung wird nicht berechnet.
Integrationsbeispiele
CSV- und Freitext-Exporte bereinigen
Entfernen Sie versteckte VS-Zeichen aus Masseneinfügen und API-Dumps vor Joins, Eindeutigkeitsprüfungen oder Warehouse-Loads.
Stabile Golden-Tests und Suchschlüssel
Machen Sie Fixtures und Facetten-Labels unabhängig von unsichtbaren Präsentationsschaltern, damit Tests und Filter deterministisch bleiben.
Technische Fragen
Was kostet es?
Das Browser-Tool ist kostenlos und läuft lokal. API-Anfragen nutzen Prepaid-KIT-Guthaben zu $0.002 pro erfolgreichem Item; ungültige Eingabe wird nicht berechnet.