[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

194. File con formati speciali

Uno degli aspetti deleteri dell'informatica è stato il proliferare di formati incompatibili nei file di dati.

In questo capitolo si raccolgono le informazioni sugli strumenti a disposizione per poter recuperare dati contenuti in file con un formato che in passato hanno avuto una certa diffusione. Come si può intuire, di solito non si tratta delle dotazioni normali di una distribuzione GNU/Linux, per cui, i programmi che vengono descritti qui vanno forse cercati tra i «contributi» esterni alla propria distribuzione.

194.1 Conversione da un insieme di caratteri a un altro

Quando si convertono dati da un formato a un altro, il primo problema è e quello di traslitterare l'insieme di caratteri. Purtroppo, non sempre è possibile «traslitterare» in modo reversibile, spesso si è costretti ad accettare una trasformazione che non permette più di riottenere lo stesso formato iniziale. Questo fatto si comprende facilmente pensando alla necessità eventuale di convertire un insieme di caratteri in un altro in cui non si dispone di alcuni simboli del primo.

Un caso particolare riguarda le conversioni di file di testo dove da un sistema di interruzioni di riga composte dalla sequenza <CR><LF> si vuole passare al solo <LF>. Per qualche motivo, il file di origine potrebbe contenere qualche codice <LF> isolato, che nel file di destinazione verrebbe interpretato alla fine come un'interruzione di riga. In pratica, se si volesse riconvertire il file nel formato precedente, tutti i codici <LF> verrebbero riconvertiti in <CR><LF>.

194.1.1 $ recode

recode [<opzioni>] <codifica-prima>:<codifica-dopo> [<file>...]

recode è un programma per la conversione di file da un insieme di caratteri a un altro. recode non si limita semplicemente a questo; spesso è in grado di intervenire anche su codifiche composte da sequenze di caratteri, anche se in queste situazioni il suo utilizzo si complica, e i risultati non sono sempre garantiti.

Osservando lo schema sintattico mostrato, si può vedere che è necessario indicare il tipo di conversione attraverso due parole chiave: la prima serve a stabilire il modo in cui sono codificati i dati in ingresso, la seconda stabilisce in che modo li si vuole trasformare in uscita.

Il file, o i file in ingresso possono essere indicati alla fine della riga di comando, e in tal caso recode tenta di sovrascriverli, oppure gli possono essere forniti attraverso lo standard input, e quindi il risultato della conversione si ottiene dallo standard output.

Bisogna essere prudenti con recode quando si indicano i file nella riga di comando, perché la conversione potrebbe essere irreversibile.

Nel suo piccolo, recode è un programma complesso. Questa sezione ne mostra solo alcuni aspetti banali, mentre per sfruttare bene tutte le sue potenzialità è necessario leggere la sua documentazione: recode.info.

Alcune opzioni

-a [<codifica>] | --auto-check [<codifica>]

Questa opzione è speciale e di solito viene usata da sola, senza indicare altri argomenti nella riga di comando di recode. Serve per ottenere da recode un riassunto sulle possibilità di conversione da o verso la codifica indicata.

-g | --graphics

Questa opzione riguarda la conversione dall'insieme di caratteri IBM-PC, a un altro tipo, dove si vuole tentare di trasformare in qualche modo i simboli grafici tipici di quella codifica. È evidente che questa conversione è irreversibile.

Alcune codifiche

Le codifiche da utilizzare nelle conversioni sono indicate attraverso la notazione <codifica-prima>:<codifica-dopo>, come si vede nello schema sintattico introduttivo. Le parole chiave utilizzate per questo possono essere indicate indifferentemente utilizzando le lettere minuscole o maiuscole. L'elenco delle codifiche (e quindi delle trasformazioni possibili) è molto lungo, e potrebbe essere ottenuto un riepilogo attraverso l'opzione -a. Tuttavia, sarebbe meglio leggere prima ciò che è stato annotato nel documento recode.info al riguardo, per non rischiare di trovarsi poi nei pasticci.

Alcuni insiemi di caratteri hanno un nome standard che contiene il simbolo di due punti (:). Dal momento che questo crea ambiguità con i due punti utilizzati per separare la codifica iniziale da quella finale, si può scegliere un alias di quel nome che non ne contenga, oppure si possono proteggere utilizzando la barra obliqua inversa (\), tenendo conto eventualmente dei problemi che questo può dare con la shell utilizzata. In pratica, per scrivere ISO_8859-1:1987, si potrebbe utilizzare la notazione ISO_8859-1\:1987, oppure l'alias ISO-8859-1.

IBM437 | 437 | cp437

Rappresenta la codifica IBM usata normalmente nel Dos. Quando si converte da questa codifica a un'altra, i codici di interruzione di riga vengono lasciati inalterati.

IBM-PC | ibmpc

È praticamente la stessa codifica IBM437, con la differenza che quando si converte da questa codifica a un'altra, i codici di interruzione di riga vengono trasformati.

IBM850 | 850 | cp850

Rappresenta la codifica IBM usata normalmente nel Dos per la localizzazione europea.

ISO_8859-1:1987 | ISO_8859-1 | ISO-8859-1 | CP819 | IBM819 | iso-ir-100 | l1 | latin1

Si riferisce alla codifica ISO 8859-1.

Esempi

recode -a IBM437

Mostra tutte le possibilità di abbinamento con la codifica IBM437.

recode -a IBM-PC

Mostra tutte le possibilità di abbinamento con la codifica IBM-PC.

recode IBM-PC:ISO_8859-1 lettera

Converte il file lettera dalla codifica IBM-PC a ISO 8859-1, sovrascrivendo il file.

recode IBM-PC:ISO_8859-1 < lettera > lettera2

Converte il file lettera dalla codifica IBM-PC a ISO 8859-1, generando il file lettera2.

recode -g IBM-PC:ISO_8859-1 < schema1 > schema2

Converte il file schema1 dalla codifica IBM-PC a ISO 8859-1, generando il file schema2, tentando di convertire anche i simboli grafici.

194.2 File .DBF -- dBase III e derivati

Il software basato sui file in formato .DBF, ovvero quelli di dBase III, è stato molto importante nell'ambito del sistema operativo Dos. Nel suo piccolo ha permesso agli utenti di quel sistema operativo di realizzare delle strutture di dati che si avvicinavano alle potenzialità di una base di dati relazionale.

Ancora oggi si trovano programmi applicativi gestionali basati su questo formato, scritti probabilmente con il famoso compilatore Clipper. Volendo, esiste del software commerciale che permette di gestire questi file anche con GNU/Linux, ma c'è almeno la possibilità di leggere il contenuto di questi attraverso il programma dbview.

194.2.1 $ dbview

dbview [<opzioni>] <file-dbf>

Il programma dbview consente di leggere il contenuto dei file .DBF di dBase III, e probabilmente anche le versioni di dBase IV. Se viene avviato senza opzioni, si ottiene la visualizzazione del contenuto del file indicato nel formato predefinito, come si vede dall'esempio seguente:

Articolo   : 1         
Descr      : bicicletta uomo                         
Prezzo u   : 500.00
Import     : T
Scadenza   : 20011120
Note       : 2

Articolo   : 2         
Descr      : bicicletta donna                        
Prezzo u   : 550.00
Import     : 
Scadenza   : 20011120
Note       : 3

Articolo   : 3         
Descr      : bicicletta uomo/donna leggera           
Prezzo u   : 600.00
Import     : 
Scadenza   : 20011120
Note       : 4

In realtà, in questo modo, i nomi dei campi vengono mostrati in modo diverso dal reale, utilizzando anche le lettere minuscole ed eliminando i simboli di sottolineatura. Utilizzando l'opzione -r, il primo record apparirebbe così:

ARTICOLO   : 1         
DESCR      : bicicletta uomo                         
PREZZO_U   : 500.00
IMPORT     : T
SCADENZA   : 20011111
NOTE       : 2

È necessario osservare che i campi booleani, e in questo caso si tratta di quello intitolato IMPORT, mostrano solo la lettera T per i valori booleani Vero, altrimenti non si ha alcuna indicazione; inoltre, le date vengono espresse secondo il formato <AAAA><MM><GG>. Infine, dall'esempio non si intuisce, ma il campo NOTE è di tipo «memo», e in questo caso si sono persi i dati.

I dati contenuti nei file .DBF, dal momento che sono stati memorizzati presumibilmente utilizzando il sistema operativo Dos, utilizzano molto probabilmente un insieme di caratteri diverso da Latin-1 o comunque diverso da ciò che si utilizza con GNU/Linux. Pertanto, è probabile che sia necessario rielaborare ciò che si ottiene con dbview attraverso un programma di conversione come recode. Tuttavia, è bene considerare che nella storia dei file .DBF sono state usate anche codifiche differenti dal solito IBM437, e di questo occorre tenerne conto quando ci si accorge che la conversione non funziona come ci si aspetterebbe.

Alcune opzioni

--browse | -b

Se si utilizza questa opzione, i record vengono mostrati su una sola riga per volta, separando i campi con un simbolo, il separatore, che di solito è costituito dai due punti (:).

--delimiter x | -d x

Con questa opzione è possibile specificare il simbolo da utilizzare per separare i campi dei record che vengono visualizzati. Il simbolo di separazione predefinito sono i due punti (:)

--description | -e x

In questo caso, oltre a mostrare il contenuto del file, nella parte iniziale vengono riepilogate le caratteristiche dei campi contenuti.

--omit | -o x

Non elenca il contenuto del file, ma si limita a dare le altre informazioni se richieste attraverso le opzioni opportune.

--reserve | -r x

Mostra i nomi dei campi così come sono stati memorizzati.

Esempi

dbview articoli.dbf

Elenca il contenuto del file articoli.dbf nella forma predefinita.

dbview -b articoli.dbf

Mostra i record utilizzando una sola riga per ognuno.

dbview -b articoli.dbf | recode ibm437:latin1

Come nell'esempio precedente, ma utilizza recode per trasformare i caratteri speciali che altrimenti non sarebbero visibili correttamente (per esempio le lettere accentate).

194.3 File tipici di MS-Windows

Alcuni formati di file utilizzati con MS-Windows sono considerati da molti degli «standard». Tra tutti, il più «importante» è quello di MS-Word, con in più il problema che di questo ne esistono molte versioni.

194.3.1 $ mswordview

mswordview [<opzioni>] <file-doc>

mswordview è un programma il cui scopo è quello di convertire file di MS-Word in HTML. La conversione non può essere perfetta, ma il progetto è condotto con impegno e i risultati che dà questo programma sono buoni.

Inizialmente, mswordview è in grado di convertire i file di MS-Word 8, ma dovrebbero aggiungersi successivamente anche i formati precedenti.

mswordview è in grado di convertire solo un file alla volta, precisamente quello che viene indicato alla fine degli argomenti. Se non viene richiesto qualcosa di particolare attraverso le opzioni, mswordview tenta di creare un file con lo stesso nome di quello che viene convertito, con l'aggiunta dell'estensione .html. Inoltre, se il file contiene delle immagini incorporate, queste vengono trasferite su file esterni.

Alcune opzioni

-o <file-html> | --outputfile <file-html>

Permette di indicare esplicitamente il file HTML che si vuole generare.

-g <file-errori> | --errorfile <file-errori>

Permette di annotare gli errori incontrati durante la conversione nel file indicato.

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]