Largeur nulle et invisibles
ZERO WIDTH NO-BREAK SPACE (U+FEFF)
L’indicateur d’ordre des octets. Tout au début d’un fichier, il annonce l’encodage ; partout ailleurs, c’est un rien invisible et insécable, dont Unicode déconseille cet usage depuis la version 3.2.
- Point de code
U+FEFF- Catégorie
- Largeur nulle et invisibles
- Supprimé par défaut
- Oui
- Option qui le régit
- Aucune option nécessaire
- Peut être porteur
- Non
D’où il vient
Les éditeurs Windows, les exports d’Excel et tout ce qui écrit de l’« UTF-8 avec BOM ». Concaténer plusieurs fichiers de ce genre laisse un BOM au milieu du résultat. Copier depuis une cellule de tableur en emporte souvent un au passage.
Pourquoi il compte
Un BOM en tête casse les analyseurs JSON, les en-têtes YAML, les shebangs de scripts et les en-têtes CSV ; un BOM au milieu est simplement un caractère invisible qui met en échec toute comparaison exacte. C’est aussi la raison pour laquelle un fichier de configuration « a l’air normal » et refuse de se charger.
Avant et après
Ce premier caractère invisible est la raison pour laquelle `JSON.parse` refuse cette chaîne.
Le caractère est affiché sous forme de pastille étiquetée, pour que vous voyiez où il se place. Dans votre texte, il ne dessine absolument rien.
Quand il est légitime
Comme tout premier caractère d’un fichier, en guise de signature d’encodage — ce qui est une propriété du FICHIER, pas du texte. Une fois le texte dans une zone de collage, il n’y a plus de BOM légitime.
Comment le supprimer
La passe par défaut le supprime, où qu’il se trouve. Ghostchars travaille sur du texte, donc il traite le BOM de tête comme du texte lui aussi.
Est-ce un filigrane d’IA ?
Ce n’est pas un filigrane
Non. Un BOM est un artefact d’encodage produit par les éditeurs et les chaînes d’export. Il dit quelque chose sur l’outil qui a enregistré le fichier, et rien sur qui a écrit les mots.
Aucun lien avec un texte généré par une machine. Il vient d’un logiciel, d’un clavier ou d’une personne.
Questions
Pourquoi mon JSON refuse-t-il de s’analyser ?
Un BOM en tête est un caractère placé avant l’accolade ouvrante. La plupart des analyseurs JSON le rejettent comme jeton inattendu, et l’erreur pointe la position 0, où l’on ne voit rien.
Est-ce la même chose qu’un liant de mots ?
Au milieu d’un texte, les deux se comportent de la même façon. Unicode a déconseillé U+FEFF pour cet usage et a fait de U+2060 WORD JOINER le caractère correct, laissant à U+FEFF le seul rôle d’indicateur d’ordre des octets.
Ai-je parfois besoin de le garder ?
Seulement si un outil en aval exige un fichier marqué par un BOM — et dans ce cas vous l’ajoutez au moment d’écrire le fichier, pas en le trimballant à l’intérieur du texte.
Vérifier votre propre texte
Collez n’importe quoi dans le nettoyeur pour voir tous les caractères invisibles qu’il contient, avec leur position, leur point de code et ce qui arrive à chacun. Rien n’est envoyé.