Esiste un'applicazione della riga di comando di Mac OS X in grado di convertire le codifiche di testo da un tipo a un altro? (In particolare per convertire Mac OS Roman in utf8)


16

Vorrei chiamare un'utilità della riga di comando in Mac OS X 10.8 che mi dà la possibilità di convertire un file di testo salvato nella codifica romana Western Mac OS standard nel più generico UTF-8.

Chiamerò l'utilità da un AppleScript che ho creato. AppleScript è estremamente lento quando si lavora con blocchi di testo molto grandi. Pertanto, desidero eseguire l'analisi e la conversione del mio testo utilizzando la riga di comando di OS X. Ho trovato uno strumento chiamato "sed", che mi permette di eseguire l'analisi del testo. Tuttavia, ci sono ancora molti elementi del file che devono essere ripuliti, caratteri che appaiono come immondizia se il file viene aperto come utf-8 (ad esempio virgolette intelligenti e ellissi).

Sto pensando che forzare una conversione di codifica di testo può aiutare a eliminare tutti i caratteri non utf8 nel file. Tuttavia, non riesco a vedere come "sed" possa facilmente convertire la codifica del testo.

Avrò già salvato il file temp txt, come MacRoman, su disco usando le routine AppleScript integrate.

Qualcuno di voi ha qualche idea su uno strumento da riga di comando integrato in grado di convertire la codifica del testo? Riga di comando per prestazioni e built-in, poiché altri utenti del mio script non avranno necessariamente il set di strumenti adeguato se non è incorporato.

Grazie per l'aiuto!


Il comando è iconv.
bmargulies,

@bmargulies: quando provo iconv su un file codificato in MacRoman e provo a convertirlo in UTF-8, ottengo caratteri spazzatura al posto degli originali "caratteri insoliti". Ad esempio, i puntini di sospensione vengono convertiti in "Äö√Ѭ∂‚Äö√Ѭ∂". Mi aspetto che i puntini di sospensione si convertano con grazia in sei periodi. Le virgolette intelligenti sono le stesse, si convertono anche in testo strano, trasformandosi in "Äö√Ñ√≤". La sintassi che uso è: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Esiste una sintassi CLI specifica che indichi a iconv di convertire con garbo tutto il testo in sostituzioni appropriate?

E quali argomenti passi?
bmargulies,

@ Darkstar - la tua stessa procedura ha funzionato bene per me. Sei sicuro che la tua fonte fosse in MacRoman?
Tom Gewecke,

1
Excel non dovrebbe avere questo problema, dovresti essere in grado di impostare la codifica per le importazioni come preferisci, ad esempio vedi superuser.com/questions/280603/…
Tom Gewecke,

Risposte:


8

Un altro modo per convertire i caratteri non ASCII in varianti ASCII è usare iconv -t ASCII//TRANSLIT:

$ echo ‘’“”–—…äé | iconv -t ASCII//TRANSLIT
''""--..."a'e

ASCII//IGNORErimuoverebbe caratteri non ASCII, ma puoi farlo anche con ad esempio tr -dc '\0-\177'.


Fa iconvpermesso di traslitterare: A → un"?
dan

@danielAzuelos Non lo so. Il modo in cui i caratteri vengono sostituiti dipende comunque dall'implementazione: ad esempio iconv che viene fornito con Debian sostituisce äcon just a.
Lri,

28

iconv è definitivamente lo strumento di scelta qui:

iconv -f MACROMAN -t UTF-8 your-roman-encoded-file.txt > utf-8-encoded-file.txt

Esegui iconv --listper visualizzare un elenco di tutte le codifiche supportate.


una volta ho capito che non era MacRoman, ma era "iso-8859-1", ho provato di nuovo. Non ha ancora fatto quello che volevo. Non credo che iconv possa fare quello che voglio che faccia: sostituisci con grazia tutti i fantasiosi personaggi estesi con punti standard e apostrofi e virgolette doppie.
Darkstar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.