Intermédiaire 8 min de lecture 25 janvier 2025

Em dash (—) : usages, pièges et bonnes pratiques

Il ressemble à un simple tiret, pourtant l’em dash n’est pas un “-”. Un copier-coller change une URL, un slug diffère, une comparaison échoue. Le tiret cadratin — U+2014 — est typographiquement utile, mais en code il peut surprendre. Voici comment le reconnaître, l’utiliser correctement et éviter les erreurs qu’il entraîne.

Qu'est-ce que l’em dash ?

C’est le tiret long, dit cadratin, encodé en Unicode sous U+2014. Visuellement proche d’autres tirets, il n’a pas la même valeur que le trait d’union ASCII.

Voici l’essentiel à connaître pour maîtriser l’em dash :

1 Définition et encodage

Le tiret cadratin (em dash) — code Unicode U+2014 — n’est pas équivalent à “-”.

Em dash — U+2014, UTF-8 E2 80 94, HTML —

2 Tirets proches à ne pas confondre

Plusieurs signes ressemblent à un tiret mais n’ont pas le même code.

Hyphen-minus (-) U+002D • En dash (–) U+2013 • Figure dash (‒) U+2012 • Minus sign (−) U+2212

3 Usages typographiques recommandés

L’em dash sert aux incises, interruptions ou emphases.

Incise — parenthèse au sein d’une phrase
Interruption ou bascule de ton
Éviter pour les plages numériques (préférer en dash “–”)
Espaces insécables autour en français selon la charte

4 Saisie et rendu techniques

Selon l’environnement, l’em dash s’insère et s’affiche différemment.

HTML: — → —
UTF-8: E2 80 94
Auto-correction: Word/Docs transforment “--” ou “-” en “—”
CSS content: "—"; Raccourcis clavier selon OS

Problèmes classiques

Copier-coller: em dash injecté à la place d’un hyphen

Word ou un site remplace “-” par “—” et casse un slug, une URL ou une commande.

Tests unitaires qui échouent à cause d’un em dash

Deux chaînes semblent identiques, mais “—” n’est pas “-” et la comparaison échoue.

Slugify ou split imprévisibles

Les fonctions ne remplacent pas toujours “—” par “-”, d’où des séparations manquées.

Regex qui ignorent les tirets Unicode

“-” est détecté, mais “—” ou “–” ne le sont pas si \p{Pd} n’est pas pris en compte.

Exemple de problème courant :

# Deux valeurs visuellement similaires mais différentes
string1 = "email-domain"
string2 = "email—domain" # Contient un em dash U+2014
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alerte liés aux tirets

!
Un diff git montre des changements de “-” en “—” sans modification visible claire
!
Un split() sur “-” ne fonctionne plus car le texte contient des em dash
!
Un slug ou une clé de config contient “—” et n’est pas reconnu par l’application
!
Votre éditeur affiche un tiret plus long que prévu selon la police
!
Un copier-coller dans un terminal échoue car “—” remplace “-” dans une option

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII repère instantanément l’em dash et ses variantes. L’analyse montre le code exact, la position et la meilleure substitution selon le contexte (texte, code, URL).

✅ Détection automatique

Em dash (—), en dash (–), hyphen (-), minus sign (−)

📊 Analyse complète

Codes Unicode, positions précises, recommandations de remplacement

🧹 Nettoyage automatique

Conversion vers “-” pour les besoins techniques, — en HTML

💾 Export propre

Texte normalisé prêt pour build, CI, et publication

Autres méthodes de détection

Affichage dans l'éditeur

Activez l’affichage des caractères invisibles et des points de code Unicode
Installez un linter qui alerte sur “—” en code source (JS/JSON/YAML)

En ligne de commande (Unix)

# Repérer l’em dash (U+2014)
grep -Pn "\x{2014}" fichier.txt
# Remplacer par un hyphen ASCII
sed -i 's/\xE2\x80\x94/-/g' fichier.txt
# Lister les ponctuations “dash”
perl -ne 'print if /\p{Pd}/' fichier.txt
# Voir les codes hexadécimaux
hexdump -C fichier.txt

En code

JavaScript

const clean = str.replace(/[\u2012-\u2015]/g, "-"); // normaliser tous les tirets vers "-"

Python

import re; clean = re.sub(r"[\u2012-\u2015]", "-", s) # remplace em/en/figure dash

Excel / Google Sheets

SUBSTITUE(A1;CAR(8212);"-") // 8212 = U+2014

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Gagnez du temps : détectez et remplacez automatiquement l’em dash là où il n’est pas souhaité, tout en le conservant dans les zones rédactionnelles.

Détection des tirets Unicode
Nettoyage sélectif contextuel
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Uniformisez les tirets: mappez U+2012–U+2015 vers “-” en code et — en HTML éditorial
Définissez des règles de typographie (espaces autour de “—” en français)
Contrôlez l’encodage UTF-8 et les conversions d’entités HTML

🧹 Filtrer

Écrivez une fonction normalize_dashes() pour vos entrées
Remplacez “—” par “-” dans les slugs, IDs, chemins et options CLI
Bloquez les tirets Unicode dans les champs techniques (regex \p{Pd})

⚙️ Automatiser

Hooks pre-commit qui refusent “—” dans code, YAML, JSON, .env
Sanitization des inputs utilisateurs: remplacement U+2012–U+2015
Linting CI pour détecter les tirets non-ASCII dans les fichiers sensibles

Checklist rapide

Règles claires: “—” pour l’éditorial, “-” pour la technique
Slugify/URL: conversion systématique des tirets Unicode vers “-”
Linter/EDR qui signale l’em dash dans le code source
Fonction de normalisation des tirets partagée dans vos libs
Tests empêchant “—” dans les slugs, IDs et fichiers de config
Documentation interne: encodage UTF-8, entités — et conventions

Conclusion

L’em dash est un atout typographique, mais un piège en environnement technique s’il n’est pas maîtrisé.

Définissez où “—” est autorisé, normalisez les tirets ailleurs, et vous éliminez une source fréquente d’erreurs de parsing, de slugs et de comparaisons.

Détectez les em dash indésirables maintenant

Utilisez notre outil pour repérer et normaliser l’em dash dans vos textes et vos fichiers techniques.

Analyser mon texte