Tutti gli articoli

Spazi e caratteri invisibili: la causa nascosta di bug strani

Copiare un titolo o una frase breve da Word o Google Docs e incollarlo in un campo di un modulo ha un'insidia comune: l'editor di testo a volte inserisce uno spazio unificatore (U+00A0, lo stesso carattere dell'entità HTML  ) al posto di uno spazio normale, proprio nei punti in cui non vuole che il testo vada a capo in modo scomodo.

Perché causa bug strani

Il sintomo più classico è un confronto tra stringhe che restituisce inaspettatamente "non uguali", anche se il testo sullo schermo appare identico. La causa è spesso che una stringa contiene uno spazio normale e l'altra quello spazio unificatore importato da Word. Visivamente non c'è differenza; per il computer sì — ed è proprio il tipo di bug che passa inosservato in una code review perché non si vede nel diff.

Trim

Trim rimuove i caratteri di spazio bianco dall'inizio e dalla fine di una stringa, lasciando invariato il contenuto in mezzo. È un'operazione standard di pulizia dell'input utente — uno spazio in più accidentale all'inizio di un campo di un modulo non dovrebbe influire sul confronto o sulla validazione di un valore.

Comprimere gli spazi

Un'altra operazione comune è sostituire più caratteri di spazio bianco consecutivi con uno solo. È utile per testo copiato da una fonte formattata (un PDF o una tabella, ad esempio), dove possono comparire doppi spazi o tabulazioni accidentali al posto di un singolo spazio.

A cosa serve

  • Diagnosticare perché il confronto tra due stringhe apparentemente identiche fallisce.
  • Ripulire da caratteri superflui e invisibili un testo copiato da un elaboratore di testi o da una pagina web.
  • Normalizzare l'input dell'utente prima di salvarlo in un database.

Caratteri a larghezza zero

Oltre ai caratteri di spaziatura visibili esistono caratteri a larghezza zero (zero-width space, zero-width joiner) — non occupano alcuno spazio sullo schermo, ma sono presenti nel testo come caratteri distinti. Questi caratteri a volte finiscono nel testo quando si copia da alcuni siti o messaggistiche e possono rompere silenziosamente il confronto di stringhe o la ricerca, restando completamente invisibili anche in un editor di testo.

Prova lo strumento