Existe um aplicativo de linha de comando do Mac OS X que pode converter codificações de texto de um tipo para outro? (Especificamente para converter Mac OS Roman para utf8)

16

Gostaria de chamar um utilitário de linha de comando no Mac OS X 10.8 que me permita converter um arquivo de texto salvo na codificação romana padrão do Western Mac OS para o UTF-8 mais genérico.

Vou chamar o utilitário de um AppleScript que eu criei. AppleScript é extremamente lento ao trabalhar com blocos de texto muito grandes. Como tal, quero fazer a análise e a conversão de texto usando a linha de comando do OS X. Eu encontrei uma ferramenta chamada "sed", que me permite fazer a análise de texto. No entanto, ainda existem muitos elementos do arquivo que precisam ser limpos, caracteres que aparecem como lixo se o arquivo for aberto como utf-8 (por exemplo, aspas e elipses inteligentes).

Eu estou pensando que forçar uma conversão de codificação de texto pode ajudar a eliminar todos os caracteres não utf8 no arquivo. No entanto, não consigo ver como "sed" pode converter facilmente a codificação de texto.

Já salvarei o arquivo temp txt, como MacRoman, em disco usando as rotinas AppleScript internas.

Algum de vocês tem alguma idéia sobre uma ferramenta de linha de comando interna que pode converter a codificação de texto? Linha de comando para desempenho e built-in, já que outros usuários do meu script não terão necessariamente o conjunto de ferramentas adequado se ele não estiver embutido.

Obrigado pela ajuda!

Estrela Escura
fonte
O comando é iconv.
bmargulies
@ bmargulies: Quando tento o iconv em um arquivo codificado no MacRoman e tento convertê-lo em UTF-8, recebo caracteres ilegíveis no lugar dos "caracteres incomuns" originais. Por exemplo, as reticências são convertidas em "Äö√Ѭ∂‚Äö√Ѭ∂". Eu esperaria que as reticências se convertessem graciosamente em seis períodos. As aspas inteligentes são as mesmas, elas também se convertem em texto estranho, transformando-se em "Äö√Ñ√≤". A sintaxe que eu uso é: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Existe uma sintaxe da CLI específica que informa ao iconv para converter normalmente todo o texto em substituições apropriadas?
E quais argumentos você passa?
bmargulies
@ Darkstar - seu mesmo procedimento funcionou bem para mim. Tem certeza de que sua fonte estava na MacRoman?
21813 Tom Tom Gewecke
11
Excel não deve ter esse problema, você deve ser capaz de definir a codificação para as importações para o que quiser, por exemplo, ver superuser.com/questions/280603/...
Tom Gewecke

Respostas:

8

Outra maneira de converter caracteres não ASCII em variantes ASCII é usar iconv -t ASCII//TRANSLIT:

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

ASCII//IGNOREremoveria caracteres não ASCII, mas você também pode fazer isso por exemplo tr -dc '\0-\177'.

Lri
fonte
Permite iconvtransliterar: ä → a "?"
dan
@danielAzuelos Eu não sei. A maneira como os caracteres são substituídos depende da implementação: por exemplo, o iconv que acompanha o Debian substitui äpor just a.
Lri
28

iconv é definitivamente a ferramenta de escolha aqui:

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

Execute iconv --listpara ver uma lista de todas as codificações suportadas.

nohillside
fonte
depois que descobri que não era MacRoman, mas era "iso-8859-1", tentei novamente. Ainda não fez o que eu queria. Não acho que o iconv possa fazer o que quero: substitua graciosamente todos os caracteres estendidos sofisticados por períodos padrão, apóstrofos e aspas duplas.
397 Darkstar