Existe-t-il une application de ligne de commande Mac OS X qui peut convertir des encodages de texte d'un type à un autre? (Spécifiquement pour convertir Mac OS Roman en utf8)

16

Je voudrais appeler un utilitaire de ligne de commande dans Mac OS X 10.8 qui me donne la possibilité de convertir un fichier texte enregistré en encodage romain Western Mac OS standard en UTF-8 plus générique.

J'appellerai l'utilitaire à partir d'un AppleScript que j'ai créé. AppleScript est extrêmement lent lorsque vous travaillez avec de très gros blocs de texte. En tant que tel, je veux faire mon analyse et conversion de texte en utilisant la ligne de commande OS X. J'ai trouvé un outil appelé "sed" qui me permet de faire l'analyse du texte. Cependant, il y a encore de nombreux éléments du fichier qui doivent être nettoyés, des caractères qui apparaissent comme des ordures si le fichier est ouvert en utf-8 (par exemple des guillemets intelligents et des ellipses).

Je pense que forcer une conversion d'encodage de texte peut aider à éliminer tous les caractères non utf8 du fichier. Cependant, je ne vois pas comment "sed" peut facilement convertir l'encodage de texte.

J'aurai déjà enregistré le fichier temp txt, en tant que MacRoman, sur le disque en utilisant les routines AppleScript intégrées.

Avez-vous des idées sur un outil de ligne de commande intégré qui peut convertir le codage de texte? Ligne de commande pour les performances et intégrée, car les autres utilisateurs de mon script n'auront pas nécessairement le jeu d'outils approprié s'il n'est pas intégré.

Merci de votre aide!

Étoile Noire
la source
La commande est iconv.
bmargulies
@bmargulies: Lorsque j'essaie iconv sur un fichier encodé dans MacRoman et que je tente de le convertir en UTF-8, j'obtiens des caractères parasites à la place des "caractères inhabituels" d'origine. Par exemple, les points de suspension sont convertis en "Äö√Ѭ∂‚Äö√Ѭ∂". Je m'attendrais à ce que les points de suspension se transforment gracieusement en six périodes. Les citations intelligentes sont les mêmes, elles se convertissent également en texte étrange, se transformant en "Äö√Ñ√≤". La syntaxe que j'utilise est: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Existe-t-il une syntaxe CLI spécifique qui indiquerait à iconv de convertir gracieusement tout le texte en remplacements appropriés?
Et quels arguments passez-vous?
bmargulies
@ Darkstar - votre même procédure a bien fonctionné pour moi. Êtes-vous sûr que votre source était dans MacRoman?
Tom Gewecke
1
Excel ne devrait pas avoir ce problème, vous devriez pouvoir définir l'encodage des importations comme vous le souhaitez, par exemple, voir superuser.com/questions/280603/…
Tom Gewecke

Réponses:

8

Une autre façon de convertir des caractères non ASCII en variantes ASCII consiste à utiliser iconv -t ASCII//TRANSLIT:

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

ASCII//IGNOREsupprimerait les caractères non ASCII, mais vous pouvez également le faire avec par exemple tr -dc '\0-\177'.

Lri
la source
Permet iconvde translittérer: ä → a "?
dan
@danielAzuelos je ne sais pas. La façon dont les caractères sont remplacés dépend cependant de l'implémentation: par exemple, l'iconv fourni avec Debian remplace äpar just a.
Lri
28

iconv est définitivement l'outil de choix ici:

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

Exécutez iconv --listpour voir une liste de tous les encodages pris en charge.

nohillside
la source
une fois que j'ai compris que ce n'était pas MacRoman, mais bien "iso-8859-1", j'ai réessayé. Il n'a toujours pas fait ce que je voulais qu'il fasse. Je ne pense pas que iconv puisse faire ce que je veux qu'il fasse: remplacer gracieusement tous les caractères étendus de fantaisie par des points et des apostrophes standard et des guillemets doubles.
Darkstar