Существует ли приложение командной строки Mac OS X, которое может преобразовывать кодировки текста из одного типа в другой? (Специально для преобразования Mac OS Roman в utf8)


16

Я хотел бы вызвать утилиту командной строки в Mac OS X 10.8, которая дает мне возможность конвертировать текстовый файл, сохраненный в стандартной римской кодировке Western Mac OS, в более общий UTF-8.

Я буду вызывать утилиту из AppleScript, который я создал. AppleScript очень медленный при работе с очень большими текстовыми блоками. Таким образом, я хочу сделать мой анализ текста и преобразование, используя командную строку OS X. Я нашел инструмент под названием «sed», который позволяет мне выполнять анализ текста. Тем не менее, есть еще много элементов файла, которые необходимо очистить, символы, которые появляются как мусор, если файл открывается как utf-8 (например, умные кавычки и эллипсы).

Я думаю, что принудительное преобразование кодировки текста может помочь устранить все не-UTF8 символы в файле. Тем не менее, я не вижу, как «sed» может легко преобразовать кодировку текста.

Я уже сохраню временный текстовый файл, как MacRoman, на диск, используя встроенные процедуры AppleScript.

У кого-нибудь из вас есть идеи относительно встроенного инструмента командной строки, который может преобразовывать кодировку текста? Командная строка для производительности и встроенная, так как другие пользователи моего скрипта не обязательно будут иметь надлежащий набор инструментов, если он не встроен.

Спасибо за вашу помощь!


Команда это iconv.
bmargulies

@bmargulies: Когда я пытаюсь использовать iconv для файла, закодированного в MacRoman, и пытаюсь преобразовать его в UTF-8, я получаю символы мусора вместо оригинальных «необычных символов». Например, многоточие преобразуется в «Äö√Ѭ∂‚Äö√Ѭ∂». Я ожидаю, что многоточие изящно преобразуется в шесть периодов. Умные кавычки одинаковы, они также преобразуются в странный текст, превращаясь в «Äö√Ñ√≤». Синтаксис, который я использую: кошка source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Существует ли определенный синтаксис CLI, который указывает iconv корректно преобразовывать весь текст в соответствующие замены?

А какие аргументы вы передаете?
bmargulies

@ Darkstar - та же процедура для меня работала нормально. Вы уверены, что ваш источник был в MacRoman?
Том Гевекке

1
Excel не должны иметь эту проблему, вы должны быть в состоянии установить кодировку для импорта все , что вы хотите, например , см superuser.com/questions/280603/...
Том Gewecke

Ответы:


8

Другой способ преобразования не-ASCII символов в варианты ASCII - использовать iconv -t ASCII//TRANSLIT:

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

ASCII//IGNOREудалит не-ASCII символы, но вы также можете сделать это, например tr -dc '\0-\177'.


Разрешает ли iconvтранслитерацию: ä → a "?
дан

@danielAzuelos Я не знаю. Способ замены символов зависит от реализации: например, iconv, поставляемый с Debian, заменяет äпросто a.
Lri

28

iconv безусловно, является инструментом выбора здесь:

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

Запустите, iconv --listчтобы увидеть список всех поддерживаемых кодировок.


Как только я понял, что это был не MacRoman, а «iso-8859-1», я попробовал еще раз. Он все еще не сделал то, что я хотел. Я не думаю, что iconv может делать то, что я хочу: изящно заменять все причудливые расширенные символы стандартными точками, апострофами и двойными кавычками.
Darkstar
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.