Intermédiaire 8 min de lecture 25 janvier 2025

Tiret court (–) : usages, typographie et pièges courants

Un simple trait peut changer le sens, casser une commande ou fausser un slug. Le tiret court — aussi appelé en dash (–) — ressemble au trait d’union (-), mais ce n’est pas le même caractère. Voici quand l’utiliser, comment éviter les confusions et quoi faire lorsque “–” s’invite là où “-” était attendu.

Qu'est-ce que le tiret court (–) ?

C’est un signe typographique utilisé principalement pour indiquer un intervalle (10–20), une relation (Paris–Lyon) ou une incise légère. Il est distinct du trait d’union (-) et du tiret long (—).

Voici les principales familles de caractères autour du tiret court :

1 Traits et signes voisins en ASCII

Caractères souvent confondus avec le tiret court :

Hyphen-minus "-" (45), Underscore "_" (95), Plus "+" (43), Slash "/" (47)

2 Tirets typographiques Unicode

Différencier clairement les tirets typographiques :

En dash "–" (U+2013), Em dash "—" (U+2014), Figure dash "‒" (U+2012)

3 Signes proches souvent confondus

Ressemblent visuellement au tiret court mais n’ont pas la même sémantique :

Minus sign "−" (U+2212) - Signe mathématique
Non-breaking hyphen "‑" (U+2011) - Trait d’union insécable
Small hyphen "﹣" (U+FE63), Fullwidth hyphen-minus "-" (U+FF0D)

4 Cas techniques autour du tiret

Caractères qui perturbent la saisie ou l’affichage :

Soft Hyphen "­" (U+00AD) - Césure conditionnelle
Word Joiner (U+2060) - Jointure sans espace
Zero Width Space (U+200B) - Séparateur invisible

Problèmes classiques

Copier-coller depuis le web ou Word

Transforme "-" en "–" (tiret court) dans des commandes, URL ou fichiers de config.

Tests unitaires qui échouent

Une chaîne contient "–" (U+2013) au lieu de "-" (U+002D) et les comparaisons ne correspondent plus.

Options de CLI invalides

Un "–m" à la place de "-m" provoque une erreur “option inconnue” dans le terminal.

Regex trop strictes

Une validation n’autorise que "-" et rejette "–", ou inversement, selon les besoins.

Exemple de problème courant :

# Deux chaînes visuellement identiques mais différentes
string1 = "git commit -m 'ok'"
string2 = "git commit –m 'ok'" # Contient U+2013 à la place de "-"
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git montre un changement d’un seul caractère quasi invisible dans un slug ou une URL
!
Une commande copiée depuis le web renvoie “option inconnue” ou “command not found”
!
Un slug ou une clé technique contient “–” et casse une route ou un mapping
!
Votre éditeur met en surbrillance “–” quand vous activez l’affichage des symboles
!
Un tri ou un filtre sur des plages “A–Z” ne fonctionne pas comme prévu

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII repère instantanément le tiret court (–) et ses variantes, vous indique leur position dans le texte et propose des remplacements adaptés selon le contexte.

✅ Détection automatique

Tiret court (–), tiret long (—), trait d’union (-), variantes et signes proches

📊 Analyse complète

Codes Unicode, positions exactes, recommandations d’usage

🧹 Nettoyage automatique

Conversion vers "-" pour code/CLI/URL, conservation de "–" pour les intervalles

💾 Export propre

Téléchargement du texte normalisé et prêt pour la production

Autres méthodes de détection

Affichage dans l'éditeur

Activez "render punctuation / show invisibles" et surlignage des caractères non-ASCII
Installez un linter qui signale "–" hors zones textuelles

En ligne de commande (Unix)

# Rechercher le tiret court (U+2013) en UTF-8
grep -nP "\x{2013}" fichier.txt
# Afficher les caractères non ASCII
grep -nP "[^\x09\x0A\x0D\x20-\x7E]" fichier.txt
# Visualiser les caractères spéciaux
cat -A fichier.txt
# Voir les octets
hexdump -C fichier.txt | grep "e2 80 93"

En code

JavaScript

str.replace(/\u2013/g, "-")

Python

s.replace("\u2013", "-")

Excel / Google Sheets

SUBSTITUE(cellule;CAR(8211);"-")

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire des scripts, utilisez Clean ASCII pour localiser et normaliser le tiret court selon vos règles éditoriales et techniques :

Détection automatique
Nettoyage intelligent
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Définissez une table de translittération: "–" → "-" pour code/URL/CLI
Conservez "–" pour les intervalles et incises dans le contenu éditorial
Uniformisez les conventions entre équipes (styleguide typographique)

🧹 Filtrer

Écrivez une fonction canonicalize_dash() qui remplace "–" selon le contexte
Bloquez "–" dans les champs techniques (identifiants, routes, options)
Autorisez "–" uniquement dans les textes riches ou la mise en page

⚙️ Automatiser

Hook pre-commit cherchant U+2013 dans code, YAML, JSON, .env
Sanitisation des inputs utilisateurs avec remplacement contextuel
Linting CI pour maintenir une politique cohérente des tirets

Checklist rapide

Règles claires: quand utiliser "-" vs "–"
Linter/Pre-commit interdisant "–" dans les zones techniques
Éditeur configuré pour afficher et distinguer les tirets
Fonction de normalisation des tirets dans vos libs
Tests pour détecter U+2013 non souhaité dans les chaînes
Documentation interne sur l’usage typographique des tirets

Conclusion

Le tiret court est un détail visuel, mais un enjeu majeur de cohérence et de fiabilité technique.

Adoptez des règles simples, détectez automatiquement "–" dans les zones sensibles et normalisez vos contenus pour éviter les erreurs invisibles.

Identifiez les tirets courts non souhaités

Utilisez notre outil pour repérer, comprendre et normaliser l’usage du tiret court dans vos textes.

Analyser mon texte