Intermédiaire 8 min de lecture 25 janvier 2025

Mongolian Vowel Separator (U+180E) : caractère invisible qui sabote vos traitements

Le Mongolian Vowel Separator (MVS, U+180E) est un caractère de largeur nulle et « par défaut ignorable ». Il ne s’affiche pas, mais il peut faire échouer un trim(), casser un CSV, perturber une regex ou provoquer des échecs de tests. Voici comment le reconnaître, le repérer et l’éliminer proprement de vos flux.

Qu'est-ce que le Mongolian Vowel Separator (U+180E) ?

U+180E est un caractère de format historique utilisé pour la typographie mongole. Dans la plupart des contextes modernes, il est invisible et considéré comme « default ignorable ». Il peut se glisser dans vos données via des copier-coller et rester indétectable à l’œil nu.

Pour situer U+180E, voici les grandes catégories de caractères et où il se place :

1 Rappel : espaces et séparateurs ASCII classiques

Ces caractères sont visibles ou attendus par les fonctions standard. MVS n’en fait pas partie.

Espace (32), Tab (9), CR (13), LF (10)

2 Caractères de contrôle ASCII

Codes 0 à 31 et 127. MVS n’est pas un contrôle ASCII mais un caractère de format Unicode.

NUL (0), BEL (7), ESC (27), DEL (127)

3 Blancs et séparateurs Unicode non standard

MVS se comporte comme un séparateur invisible dans de nombreux outils.

MVS (U+180E) - Mongolian Vowel Separator
NBSP (U+00A0) - Espace insécable
ZWSP (U+200B) - Zero Width Space
ZWNBSP (U+FEFF) - Zero Width No-Break Space

4 Marques techniques et caractères « ignorable »

MVS est un caractère de format (Cf) « default ignorable ». Il est souvent confondu avec d’autres invisibles.

MVS (U+180E) - Format, default ignorable
BOM (U+FEFF) - Byte Order Mark
Soft Hyphen (U+00AD) - Tiret conditionnel
LRM/RLM (U+200E/U+200F) - Contrôles Bidi

Problèmes classiques avec U+180E

Copier-coller depuis le web, PDF ou éditeurs multilingues

Insère MVS de façon invisible dans des identifiants, emails, CSV, URL.

Tests unitaires qui échouent

Une chaîne contient U+180E : égalité, tri ou hash ne correspondent plus.

Trim() ou strip() ne supprime pas U+180E

Beaucoup d’implémentations ne considèrent pas MVS comme un espace à trimmer.

Regex \s ou \w incomplètes

Selon le moteur, U+180E n’est pas inclus dans \s : les remplacements échouent.

Exemple de problème courant :

# Deux emails visuellement identiques
string1 = "email@domain.com"
string2 = "email@domain.com᠎" # Contient U+180E (MVS) à la fin
assert string1 == string2 # ❌ Échec

Symptômes à surveiller avec U+180E

🚨 Signaux d'alarme

!
Un diff git montre des changements invisibles après un simple copier-coller (présence possible de U+180E)
!
Un parse CSV échoue alors que les séparateurs semblent corrects (U+180E dans une cellule)
!
Une variable d’environnement ne charge pas à cause d’un caractère invisible en fin de ligne
!
Le curseur saute une « case vide » dans l’éditeur en se déplaçant au clavier
!
Une commande collée dans le terminal renvoie une erreur mystérieuse

Comment détecter le Mongolian Vowel Separator

Solution recommandée : Clean ASCII

Clean ASCII repère immédiatement U+180E (MVS) et les autres caractères invisibles. L’analyse met en évidence les positions exactes et propose des corrections adaptées.

✅ Détection automatique

MVS (U+180E), NBSP, ZWSP, BOM, soft hyphens, contrôles

📊 Analyse complète

Codes Unicode, positions précises, recommandations de remplacement

🧹 Nettoyage automatique

Suppression ciblée de U+180E et conversion vers ASCII si pertinent

💾 Export propre

Texte nettoyé prêt à l’emploi en un clic

Autres méthodes de détection

Affichage dans l'éditeur

Activez "render whitespace" / "show invisibles" (VS Code, JetBrains, Sublime) pour traquer U+180E
Utilisez un linter/extension qui met en évidence MVS (U+180E)

En ligne de commande (Unix)

# Sortir les octets hors ASCII imprimable (détecte U+180E)
grep -P "[^\x09\x0A\x0D\x20-\x7E]" fichier.txt
# Voir les fins de ligne et tabulations
sed -n l fichier.txt
# Afficher les caractères de contrôle/invisibles
cat -A fichier.txt
# Voir les codes hexadécimaux (U+180E = e1 a0 8e en UTF-8)
hexdump -C fichier.txt

En code

JavaScript

const hasMVS = /\u180E/.test(str); const cleaned = str.replace(/\u180E/g, "");

Python

cleaned = "".join(c for c in s if ord(c) != 0x180E)

Excel / Google Sheets

UNICODE(MID(cellule;position;1))=6158 • SUBSTITUE(cellule;UNICHAR(6158);"")

Nettoyer et prévenir U+180E

🚀 Solution rapide avec Clean ASCII

Pour éliminer MVS sans effort, utilisez Clean ASCII : détection, mise en évidence et suppression en un clic.

Détection automatique de U+180E
Nettoyage ciblé et réversible
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Appliquez Unicode NFC/NFKC, puis traitez explicitement U+180E (la normalisation ne le supprime pas)
Supprimez U+180E lors des imports, avant validation/sérialisation
Uniformisez les fins de ligne et encodages pour stabiliser les diffs

🧹 Filtrer

Créez une fonction trim_all() qui retire explicitement U+180E et autres invisibles
Remplacez U+180E par chaîne vide avant comparaison/stockage
Bloquez les caractères de contrôle non souhaités et les « default ignorable » hors cas légitimes

⚙️ Automatiser

Ajoutez un hook pre-commit qui échoue si U+180E est détecté
Sanitisez les entrées utilisateurs et les imports de contenu riche
Intégrez un linter Unicode dans la CI pour surveiller U+180E et consorts

Checklist rapide

Fichiers en UTF-8 sans BOM, contrôle des caractères invisibles
Fins de ligne uniformes via gitattributes pour éviter les diffs parasites
Affichage des blancs/invisibles activé dans l’éditeur pour repérer U+180E
Fonction de nettoyage supprimant explicitement U+180E et ZW* dans vos libs
Tests automatisés vérifiant l’absence de U+180E dans les données clés
Documentation interne sur U+180E et la gestion des caractères invisibles

Conclusion

U+180E (Mongolian Vowel Separator) est discret mais redoutable. Le détecter tôt vous épargne des heures d’investigation.

Intégrez une détection systématique, nettoyez U+180E à l’entrée et standardisez vos flux : vous neutralisez une source majeure d’erreurs subtiles.

Repérez U+180E (MVS) dès maintenant

Utilisez notre outil pour identifier et supprimer le Mongolian Vowel Separator dans vos textes.

Analyser mon texte