Fare una Maggie

Indice

L’ultimo articolo mi ha fatto letteralmente impazzire. Non per la lunghezza, anche se scrivere un testo di più di tremila parole e ventimila caratteri in due lingue diverse non è una sciocchezza.

Il vero problema è nato dal fatto che a un certo punto il file Markdown dell’articolo si è corrotto. Quando Hugo provava a convertirlo in HTML, il file generato conteneva, al posto delle lettere accentate italiane, il carattere di sostituzione �, quel rombo nero con dentro un punto interrogativo bianco che abbiamo visto in tante email e pagine web.

Ci ho perso ore prima di risolvere il problema.

Quando un file Markdown si corrompe

La prima ipotesi è stata che il file contenesse qualche carattere spurio, come uno spazio che non è davvero uno spazio, oppure una di quelle lettere strane che qualche anno fa hanno creato un certo scompiglio. Un bel problema cercarle nel testo, per cui ho fatto il contrario e ho scritto una espressione regolare che cercasse tutto ciò che non era normale, raffinandola via via che procedevo.

Alla fine l’espressione regolare è diventata questa.

[^a-zA-Z0-9àèéìòùÀÈÉÌÒÙ ,.;:`'"()\[\]\-^/_*#\n]

Una cosa molto terra-terra, ma l’importante è che funzionasse. Purtroppo non ha trovato niente di strano.

Per cercare di restringere il più possibile l’area che poteva contenere l’errore, ho iniziato a togliere parti di testo, prima poche righe e poi intere sezioni, ricompilando ogni volta il file tagliuzzato con Hugo. Niente, non c’era verso di togliere quegli stramaledetti rombi neri!

E qui ho fatto la cosa davvero decisiva: dopo aver provato e riprovato senza successo, ho lasciato perdere e sono andato a cena.

Sì, perché quando non si riesce a risolvere un problema – che sia risolvere un difficile esercizio di matematica, far funzionare un programma o scrivere l’attacco di quel post che ci frulla in testa da ore – la cosa migliore da fare è lasciare perdere e dedicarsi ad altro. Non so voi, ma con me funziona sempre alla grande.

E dopo cena mi è venuta l’idea: ho fatto una Maggie e tutto è andato a posto.

Immagine generata da Google Gemini.

Fare una Maggie

Maggie è il diminutivo di Margaret Secara, diventata famosa per un trucco, semplice ma molto efficace, per recuperare un documento Word corrotto: cliccare sull’icona della Barra Multifunzione di Word per attivare la visualizzazione dei caratteri di formattazione (se la finestra di Word è stretta, l’icona potrebbe nascondersi all’interno della sezione dedicata ai paragrafi), poi selezionare tutto il testo tranne l’ultimo carattere di Invio (come mostrato in figura) e incollarlo in un nuovo documento vuoto.

Se non funziona, si può ripetere il procedimento copiando parti successive del testo in un nuovo documento, in modo da circoscrivere il più possibile la porzione corrotta.

La prima volta che ho usato questo trucco stavo lavorando su un documento di più di cento pagine, passato per parecchi colleghi e differenti versioni di Word, che era diventato ingestibile: ogni nuovo carattere impiegava secondi per comparire sullo schermo e Word andava continuamente in crash. Con la procedura descritta ho risolto il problema in un battibaleno.1

Il trucco di Maggie funziona perché i file Word hanno una doppia struttura. La prima è quella che mostrata sullo schermo del computer, fatta di testo, immagini e tabelle, con divisioni in capitoli, sezioni e paragrafi, con grassetti, italici, sottolineature, con interruzioni di pagina, liste, rientri, tutte cose messe lì un po’ a casaccio dall’utente.

La seconda struttura è quella del file XML sottostante, che dopo un po’ di aggiunte, correzioni, cancellazioni, ripensamenti, diventa un fritto misto di tag XML innestati uno sull’altro, che rimangono però sempre invisibili all’utente e non vengono mai ripuliti e ristrutturati in modo coerente dal programma.

A meno di non farlo noi a mano, copiando tutto il testo in un nuovo documento, ma evitando come la peste l’ultimo carattere di Invio che, per qualche motivo arcano, contiene la chiave di accesso alle porcherie nascoste del documento Word.

Margaret Maggie Secara avrà scoperto questo trucco per caso, ma si è rivelato così utile da trasformare il suo soprannome in una parola vera e propria, come Kleenex, Band-Aid, Post-It, Tupperware o Google.

Ma sono documenti di testo!

Però i miei post li scrivo in Markdown, mica con Word. Ma anche così, ripartire da un documento fresco e copiarci dentro il contenuto di quello corrotto può rivelarsi il metodo più veloce per risolvere tanti problemi.

Ovviamente il trucco funziona con qualunque tipo di documento in testo puro, che sia scritto in Markdown, LaTeX, HTML, XML, JSON, Org mode… o in qualsiasi altro formato più o meno arcano che vi venga in mente.

Anzi, proprio perché, a differenza di Word, un documento di testo non nasconde nulla all’utente, non serve nemmeno evitare di copiare l’ultimo carattere di Invio; si può selezionare tranquillamente tutto il testo, copiarlo e incollarlo in un nuovo file vuoto.

Prima di farlo è sempre bene controllare che il testo non contenga dei caratteri spuri, utilizzando una espressione regolare simile a quella riportata più sopra.

E con questo l’articolo è finito. Le due sezioni qui sotto sono riservate solo ai più curiosi, che vogliono sapere cosa mi era successo davvero.

Solo per i più curiosi…

Perché il metodo funziona?

Una volta risolto il problema immediato, la curiosità ha avuto il sopravvento e mi sono chiesto perché il metodo descritto funziona con i documenti di testo. Come succede spesso, lavorare dal Terminale aiuta a risolvere i problemi più spinosi.

In un normale editor come BBedit o TextMate, il file corrotto appare perfettamente normale, ma se lo si visualizza nel Terminale con cat, si nota subito che tutti i caratteri accentati vengono sostituiti da dei ?, più o meno come succede convertendolo in HTML.

Il comando file dà poi la risposta definitiva. Se lo applico al file corrotto, file 2025-07-22-macos-tahoe-developer-beta-3.md, ottengo in risposta

Non-ISO extended-ASCII text, with very long lines (1264)

mentre con un qualunque altro file Markdown il risultato è (come è giusto che sia)

Unicode text, UTF-8 text, with very long lines (1264)

In altri termini, il file aveva perso la codifica UTF-8, trasformandosi in un generico file di testo non-standard.

Se me ne fossi accorto prima, avrei potuto usare iconv per correggere la codifica del file, ma in questo caso non c’è dubbio che il copia-e-incolla è molto più pratico.

Cos’è successo davvero?

Difficile a dirsi, ma ci sono degli indizi. Dato che l’articolo era molto lungo, l’ho scritto in più riprese un po’ sul Mac Mini e un po’ sull’Air.

In genere copio i file di lavoro in locale e li sincronizzo solo in un secondo momento. Ma questa volta cambiavo continuamente computer, per cui ho preferito lavorare direttamente sulla cartella sincronizzata (usando Syncthing, ma non credo che sia stato lui il responsabile; in quel caso avrei trovato dei file in conflitto, che invece non ci sono). Invece ci sono stati ogni tanto dei problemi di rete, e penso che sia stato proprio questo che ha finito per corrompere la codifica del file.

La morale? Lavorare in locale e sincronizzare solo quando si è finito. Oppure lavorare direttamente in rete solo quando il collegamento è stabile.

Ma quando non si può, meglio ricordarsi dei consigli della buona vecchia Maggie.


  1. Pare che si possa recuperare un documento Word senza perdere traccia delle modifiche effettuate. La guida usa delle combinazioni di caratteri tipiche di Word per Windows, e quindi non è immediato applicarla alla versione per macOS. ↩︎