Intermédiaire 8 min de lecture 25 janvier 2025

Non breaking space (NBSP) : comprendre, détecter et corriger

Vous voyez un simple espace, mais la ligne refuse de se couper, une comparaison échoue, un CSV déraille. Le coupable fréquent est le non breaking space (NBSP, U+00A0), aussi appelé espace insécable. Ce texte explique ce qu'il est, où il se glisse et comment s’en débarrasser proprement.

Qu'est-ce que le non breaking space ?

C’est un espace qui empêche la coupure de ligne entre deux mots. Il ressemble à un espace normal, mais son comportement est différent.

Voici l’essentiel à savoir sur le non breaking space :

1 Définition et encodage

Espace insécable Unicode utilisé pour l’assemblage typographique (ex. 10 000, M. Dupont).

NBSP (U+00A0) — UTF-8: C2 A0 — HTML:  

2 Variantes proches et pièges

D’autres espaces non sécables ou signes proches peuvent se mêler au NBSP.

NNBSP (U+202F) - Narrow No-Break Space, ZWNBSP (U+FEFF), Soft Hyphen (U+00AD)

3 Où le NBSP apparaît le plus souvent

Sources fréquentes dans les flux de travail :

Copier-coller depuis le web, Word, PDF
CMS et correcteurs typographiques automatiques
Formats de nombres, unités, titres et noms propres
Texte justifié ou règles de non-césure

4 Comment le reconnaître

Il ne se voit pas, mais son effet se repère facilement :

La ligne ne se coupe pas où vous l’attendez
Le curseur saute bizarrement entre deux mots
Les fonctions trim/split classiques n’agissent pas
Diff git “change” un espace sans différence visible

Problèmes classiques

Copier-coller depuis le web ou Word

Insère des NBSP dans des CSV, des slugs, des variables d’environnement ou du code.

Tests unitaires qui échouent

Une chaîne contient U+00A0 au lieu d’un espace ASCII et casse l’égalité stricte.

Trim() ou strip() inefficace

Ne manipule que l’espace ASCII et ne supprime pas toujours U+00A0.

Regex \s ou \w incomplètes

Sans mode Unicode ou classes étendues, NBSP peut ne pas être capturé.

Exemple autour du NBSP :

# Deux chaînes semblent identiques mais diffèrent
string1 = "Jean Dupont"
string2 = "Jean Dupont" # Contient NBSP (U+00A0) entre les mots
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git affiche des changements d’espaces sans différence visible à l’écran
!
Des split() ou parse CSV ratent des colonnes à cause d’un NBSP autour des séparateurs
!
Un .env refuse une clé car un NBSP se trouve avant ou après le signe =
!
Un mot refuse de passer à la ligne ou le curseur “accroche” entre deux mots
!
Une commande collée dans le terminal renvoie “commande introuvable”

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII identifie instantanément le non breaking space (U+00A0) ainsi que ses variantes. L’outil met en évidence les positions exactes et propose des remplacements sûrs pour vos flux.

✅ Détection automatique

NBSP, NNBSP, ZWNBSP, soft hyphens, caractères de contrôle

📊 Analyse complète

Codes Unicode, positions précises, impact sur la mise en forme

🧹 Nettoyage automatique

Remplacement NBSP → espace ASCII ou autre stratégie selon contexte

💾 Export propre

Téléchargement du texte nettoyé, prêt à l’intégration

Autres méthodes de détection

Affichage dans l'éditeur

Activez "render whitespace" / "show invisibles" pour visualiser NBSP distinctement
Utilisez un linter qui signale U+00A0 dans le code ou les templates

En ligne de commande (Unix)

# Repérer les NBSP (U+00A0)
grep -P "\x{00A0}" fichier.txt
# Voir les fins de ligne et tabulations
sed -n l fichier.txt
# Afficher les caractères de contrôle et NBSP
cat -A fichier.txt
# Inspecter les octets (C2 A0)
hexdump -C fichier.txt

En code

JavaScript

/\u00A0/.test(str) // true si NBSP présent

Python

any(ord(c) == 0x00A0 for c in s)

Excel / Google Sheets

SUBSTITUE(cellule;CAR(160);" ")

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire des scripts, utilisez Clean ASCII pour détecter et remplacer immédiatement les NBSP.

Détection des NBSP et variantes
Nettoyage intelligent et sûr
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Appliquez Unicode NFC/NFKC pour homogénéiser les espaces et signes proches
Convertissez NBSP (U+00A0) en espace ASCII là où la non-césure n’est pas requise
Uniformisez les fins de ligne (dos2unix, gitattributes)

🧹 Filtrer

Implémentez trim_all() qui supprime NBSP/NNBSP en plus des espaces ASCII
Remplacez systématiquement   par espace simple dans le contenu HTML destiné au texte brut
Bloquez les caractères de contrôle non nécessaires et espaces non standards en entrée

⚙️ Automatiser

Hooks pre-commit qui refusent des NBSP dans code, YAML, JSON et .env
Tests de sanitation sur inputs utilisateurs et contenus CMS
Linting CI qui signale U+00A0 et U+202F dans les sources

Checklist rapide

Fichiers en UTF-8 sans BOM, espaces non désirés filtrés (U+00A0)
Fins de ligne uniformes et règles d’espaces définies dans gitattributes
Affichage des espaces invisibles activé dans l’éditeur
Fonctions utilitaires pour remplacer NBSP/NNBSP par espace ASCII
Tests qui vérifient l’absence de U+00A0 dans les champs critiques
Documentation équipe sur NBSP, NNBSP et bonnes pratiques de copie

Conclusion

Le non breaking space est discret mais impactant. Savoir le repérer et le traiter évite des erreurs sournoises en production.

Automatisez la détection, normalisez vos espaces et standardisez vos entrées : vous éliminez la majorité des soucis liés au NBSP.

Détectez le non breaking space maintenant

Utilisez notre outil pour repérer et remplacer les NBSP dans vos textes.

Analyser mon texte