Come ripulire i caratteri "strani" di Word con una macro JEdit
Oggi vi voglio mostrare come "ripulire" i testi prodotti da Microsoft Word, il popolare programma di videoscrittura.
Il problema
Succede che spesso i documenti prodotti da Word contengano dei caratteri "strani", che faticano a interagire con altre applicazioni. Un esempio su tutti: la creazione di articoli per un blog. Molti utenti creano gli articoli sul proprio PC, utilizzando appunto Word per dare la formattazione (pratica altamente sconsigliata! Ma tant'è...) per poi fare un copia / incolla dal documento nel browser. Questo metodo di lavoro, oltre a portarsi dietro altri problemi (formattazione inconsistente, codice html sballato, tag non standard) mette in luce un aspetto poco conosciuto di questo programma (e di altri simili): la presenza di caratteri non proprio usuali, come trattini più lunghi del normale (il cosiddetto "Em Dash"), puntini di sospensione condensati in un solo carattere, ecc.
Ecco un campionario di questi stramaledetti... ehm fastidiosi caratteri, scelti fra i più comuni:
-
–
-
—
-
‘
-
’
-
“
-
”
-
•
-
…
Il problema non è la correttezza o meno dell'aspetto grafico di questi caratteri, che anzi sono molto belli e rendono il tutto più professionale, ma il fatto che a volte non sono supportati da alcuni set di caratteri (i cosiddetti "font"), oppure che generano discrepanze quando vengono tradotti da un encoding ad un altro. Un "fastidio", più che una tragedia vera e propria.
Una macro per dominarli tutti...
Per risolvere questo problema, perlomeno nei file di testo semplice, ho deciso di crearmi una macro in JEdit. Questo incredibile editor può essere letteralmente "programmato" utilizzando la sintassi Beanshell (un motore di scripting basato su una sintassi "morbida" di Java), e avendo a disposizione tutti i comandi dell'editor e diverse librerie. Ho già parlato di JEdit in due articoli molto apprezzati, rimando ad essi per i dettagli:
Seguite ora queste istruzioni:
1) create o scaricate il file "CleanWordChars.bsh" e piazzatelo nella directory "macro" sotto la directory di JEdit (importante! deve avere estensione ".bsh"). Il sorgente è questo:
/* * CleanWordChars.bsh - a BeanShell macro that cleans weird characters produced * by Microsoft Word, applying some substitutions. * * Copyright (C) 2009 De Franciscis Dimitri, http://www.megadix.it/ * */ import java.util.regex.*; megadix_cleanWordChars() { try { buffer.beginCompoundEdit(); String source = textArea.getText(); Pattern p = Pattern.compile( "([\u2013\u2014\u2018\u2019\u201C\u201D\u2022\u2026]){1,1}", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(source); sb = new StringBuffer(); while(m.find()) { g = m.group(1); if (g.equals("\u2013") || g.equals("\u2014")) { m.appendReplacement(sb, "-"); } else if (g.equals("\u2018") || g.equals("\u2019")) { m.appendReplacement(sb, "'"); } else if (g.equals("\u201C") || g.equals("\u201D")) { m.appendReplacement(sb, "\""); } else if (g.equals("\u2022")) { m.appendReplacement(sb, "*"); } else if (g.equals("\u2026")) { m.appendReplacement(sb, "..."); } } m.appendTail(sb); textArea.setText(sb.toString()); } finally { buffer.endCompoundEdit(); } } megadix_cleanWordChars();
2) Cliccate ora sul menu Macros / Rescan macros: la macro comparirà nell'elenco e potrà essere eseguita sul file corrente, semplicemente cliccandoci sopra.
Ora potete sperimentare:
-
prendete un file di word con i caratteri suddetti: apici doppi, singoli, puntini di sospensione... tutti!
-
copiate il testo in un nuovo file di JEdit
-
eseguite la macro
Et voila! I caratteri "strani" sono stati sostituiti da più familiari apici "dritti", asterischi e puntini di sospensione.
In allegato potete trovare un file d'esempio su cui sperimentare, oltre al sorgente della macro.
| Allegato | Dimensione |
|---|---|
| File d'esempio | 382 byte |
| CleanWordChars.bsh - ATTENZIONE: salvare con l'estensione .bsh | 1.24 KB |
- dimitri's blog
- Aggiungi un commento
- 1627 letture
- English

