Supprimer les sélecteurs de variation Unicode
« Hello ❤️ world ☺️ » perd ses 2 sélecteurs cachés et revient sous la forme « Hello ❤ world ☺ », soit 15 caractères au lieu de 17. Lettres, emoji, ponctuation et espaces restent ; seuls les interrupteurs de style invisibles partent. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Hello ❤️ world ☺️
- Résultat
- Hello ❤ world ☺
- Longueur
- 15
- Longueur d'origine
- 17
- Supprimé
- 2
Les sélecteurs de variation Unicode sont des caractères invisibles placés à côté des glyphes de base pour indiquer au moteur de rendu s'il doit afficher une présentation emoji, une présentation texte ou une variante de glyphe précise. Le copier-coller depuis les applications de messagerie, les flux sociaux et les outils de conception laisse souvent U+FE0F (style emoji) ou U+FE0E (style texte) après les cœurs, étoiles et autres symboles, et les documents CJK peuvent embarquer des points du Variation Selectors Supplement pour des séquences idéographiques. Ces sélecteurs cassent les tests d'égalité de chaînes, gonflent les longueurs, perturbent les index de recherche et produisent des diffs mystérieux lorsque deux chaînes paraissent identiques à l'écran. Cet outil parcourt votre texte par point de code Unicode, supprime chaque sélecteur de variation des plages standard et renvoie la chaîne nettoyée avec un compteur de suppressions et des indicateurs de changement. Lettres de base, emoji, ponctuation et espaces restent en place : seuls les commutateurs invisibles sont retirés. Une entrée vide est rejetée avec une erreur de validation claire afin que les clients détectent les champs manquants.
Comment fonctionne la suppression des sélecteurs de variation
Un sélecteur de variation n'est pas une lettre visible ; c'est un point de code sans avance d'espace qui modifie la présentation du caractère précédent. Le bloc principal va de U+FE00 à U+FE0F : Variation Selectors 1 à 16. Dans ce bloc, U+FE0E demande une présentation texte (monochrome) pour les symboles compatibles emoji, et U+FE0F demande une présentation emoji (couleur).
Un cœur suivi de FE0F s'affiche souvent en emoji coloré, tandis que la même base seule ou avec FE0E peut apparaître comme dingbat simple, selon la police et la plateforme. Un second bloc, U+E0100 à U+E01EF (Variation Selectors Supplement), prend en charge les séquences de variation idéographique pour les caractères CJK lorsqu'une forme de glyphe précise est requise. Cette capacité supprime les deux blocs entièrement.
L'implémentation parcourt la chaîne avec un itérateur de points de code afin que les caractères du plan astral du Supplement soient reconnus comme unités uniques plutôt que comme paires de substitution scindées. Chaque point de code dans l'une ou l'autre plage VS est écarté et compté ; tout autre point de code est ajouté au résultat. Les chaînes vides échouent avant le parcours.
Comme le chemin est un parse pur sur des chaînes, la latence reste sous la milliseconde pour les formulaires typiques et le modèle de coût publié est analytique plutôt que fondé sur des jetons de modèle.
Ce que vous envoyez et ce que vous recevez
Envoyez un unique champ obligatoire nommé text contenant la chaîne non vide à nettoyer. Nombres et booléens sont convertis en formes décimales ou true/false ; objets, tableaux, NaN et Infinity sont rejetés. Lorsque l'entrée ne contenait déjà aucun sélecteur de variation, result est égal à text, changed est false et removed vaut zéro — utile comme détecteur de no-op dans les gardes ETL et les tests unitaires.
Contrôles classiques : un cœur suivi de FE0F devient le cœur nu, un smiley avec FE0F perd le sélecteur de présentation tout en gardant l'emoji de base, une prose mixte où seuls les sélecteurs invisibles disparaissent, et un texte CJK avec sélecteurs Supplement réduit aux idéogrammes de base.
Où les outils de suppression de sélecteurs de variation interviennent
Les équipes produit et messagerie normalisent le contenu généré par les utilisateurs pour que les tests d'égalité et la détection de doublons ignorent des commutateurs de présentation invisibles que l'utilisateur n'a jamais voulu saisir. Les systèmes de recherche et d'étiquetage retirent les sélecteurs de variation des requêtes et des titres stockés afin que les filtres correspondent qu'un cœur soit arrivé avec FE0F depuis iOS ou sans lui depuis un éditeur de texte brut.
Les équipes contenu et localisation préparent des chaînes stables pour noms de fichiers, segments d'URL (hors outil de slug dédié), objets d'e-mail sur relais pointilleux et fichiers CSV ouverts dans des outils qui altèrent ou réencodent Unicode. Si vous avez ensuite besoin de retirer des caractères de largeur nulle, des diacritiques, une normalisation Unicode complète (NFD/NFC) ou une conversion de shortcodes emoji, traitez-les comme des intentions de recherche et des landings séparées plutôt que de surcharger cette page remove-variation-selectors.
Questions fréquentes
Que fait la suppression des sélecteurs de variation ?
Elle retire les points de code de sélecteurs de variation Unicode (U+FE00–U+FE0F et U+E0100–U+E01EF) de votre texte — y compris les courants FE0F emoji et FE0E texte — et renvoie la chaîne nettoyée plus un compteur de suppressions.
Que se passe-t-il si j'envoie un texte vide ?
Les chaînes vides sont rejetées pour que les clients détectent les champs manquants au lieu de recevoir un résultat vide en silence.
Supprime-t-elle les espaces de largeur nulle ou les accents ?
Non. Seuls les sélecteurs de variation sont retirés. Espaces de largeur nulle, marques bidi, diacritiques combinants et autres caractères invisibles nécessitent des outils séparés.
Un texte déjà propre sera-t-il modifié ?
Non. S'il n'y a aucun sélecteur de variation, result est égal au texte d'origine, changed est false et removed vaut zéro.
Quel est le coût ?
L'outil navigateur est gratuit et s'exécute en local.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "Hello ❤️ world ☺️"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.remove_variation_selectors",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comment fonctionne la suppression des sélecteurs de variation
Il n'y a ni bascule de locale, ni échantillonnage aléatoire, ni appel réseau : une entrée identique produit toujours le même JSON. Les charges plus longues que le plafond documenté échouent aussi avec invalid_input pour qu'une seule requête ne monopolise pas la mémoire du Worker.
Ce que vous envoyez et ce que vous recevez
Les alias input, value, data, s, message, string, content et body sont acceptés pour brancher d'anciens clients. En cas de succès, la réponse renvoie le text d'origine, le result nettoyé, la length du résultat, original_length, un booléen changed, removed comme nombre de points de code de sélecteurs de variation retirés, et operation valant remove_variation_selectors. Utilisez le formulaire gratuit du navigateur pour coller et copier rapidement, puis appelez le même contrat depuis des scripts pour normaliser des colonnes CSV, des exports de chat ou des payloads d'API en masse. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation, y compris le texte vide, ne consomment pas le solde prépayé.
Où les outils de suppression de sélecteurs de variation interviennent
Les ingénieurs de données qui nettoient des exports CRM, des colonnes de tableurs et des dumps d'API sociales forcent souvent les champs de texte libre via un strip VS avant jointures sur clés souples ou chargement dans des entrepôts indexant par chaîne exacte. Comme cette capacité est un moteur de parse pur, le tarif API est la base publiée de $0.002 par élément réussi et l'échec de validation ne consomme pas le solde.
Cas d'intégration
Normaliser les emoji de chat et d'API sociales
Retirez les sélecteurs de présentation FE0F/FE0E pour que cœurs et symboles se comparent de façon égale entre plateformes qui injectent des styles de variation différents.
Nettoyer exports CSV et texte libre
Supprimez les caractères VS cachés des collages massifs et dumps d'API avant jointures, contrôles d'unicité ou chargements d'entrepôt.
Tests golden et clés de recherche stables
Rendez fixtures et libellés de facettes indépendants des commutateurs de présentation invisibles pour que tests et filtres restent déterministes.