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


16

Я хотів би викликати утиліту командного рядка в Mac OS X 10.8, яка дає мені можливість перетворити текстовий файл, збережений у стандартному західному коду Mac OS Roman, в кодування в більш загальний UTF-8.

Я буду викликати утиліту з створеного мною AppleScript. AppleScript надзвичайно повільний під час роботи з дуже великими текстовими блоками. Як таке, я хочу зробити свій аналіз тексту та перетворення за допомогою командного рядка OS X. Я знайшов інструмент під назвою "sed", який дозволяє мені розбирати текст. Однак є ще багато елементів файлу, які потрібно очистити, символи, які виглядають як сміття, якщо файл відкритий як utf-8 (наприклад, розумні лапки та еліпси).

Я думаю, що форсування перетворення кодування тексту може допомогти усунути всі символи, які не входять до utf8. Однак я не бачу, як "sed" може легко перетворити кодування тексту.

Я вже зберегла файл temp txt, як MacRoman, на диск, використовуючи вбудовану програму AppleScript.

У когось із вас є ідеї щодо вбудованого інструменту командного рядка, який може перетворити кодування тексту? Командний рядок для продуктивності та вбудованого, оскільки інші користувачі мого сценарію не обов'язково матимуть належний набір інструментів, якщо він не вбудований.

Спасибі за вашу допомогу!


Команда - iconv.
bmargulies

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

І які аргументи ви передаєте?
bmargulies

@ Darkstar - ваша ж процедура спрацювала мені добре. Ви впевнені, що ваш джерело був у MacRoman?
Tom Gewecke

1
У Excel не повинно виникнути цієї проблеми, ви повинні мати можливість встановити кодування для імпорту на все, що завгодно, наприклад, дивіться superuser.com/questions/280603/…
Том Гевке

Відповіді:


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, замінює äна just a.
Лрі

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.