Apakah ada aplikasi Mac OS X Command Line yang dapat mengkonversi pengkodean teks dari satu jenis ke yang lain? (Khusus untuk mengonversi Mac OS Roman ke utf8)

16

Saya ingin memanggil utilitas baris perintah di Mac OS X 10.8 yang memberi saya kemampuan untuk mengkonversi file teks yang disimpan dalam penyandian standar Western Mac OS Roman ke UTF-8 yang lebih umum.

Saya akan memanggil utilitas dari AppleScript yang telah saya buat. AppleScript sangat lambat ketika bekerja dengan blok teks yang sangat besar. Karena itu, saya ingin melakukan parsing dan konversi teks menggunakan baris perintah OS X. Saya telah menemukan alat yang disebut, "sed", yang memungkinkan saya melakukan parsing teks. Namun, masih ada banyak elemen file yang perlu dibersihkan, karakter yang muncul sebagai sampah jika file dibuka sebagai utf-8 (mis. Kutipan pintar dan elips).

Saya berpikir bahwa memaksa konversi pengkodean teks dapat membantu menghilangkan semua karakter non-utf8 dalam file. Namun, saya tidak dapat melihat bagaimana "sed" dapat dengan mudah mengkonversi pengkodean teks.

Saya sudah menyimpan file temp txt, seperti MacRoman, ke disk menggunakan rutin AppleScript bawaan.

Apakah ada di antara Anda yang memiliki ide untuk alat baris perintah bawaan yang dapat mengkonversi pengkodean teks? Baris perintah untuk kinerja dan built-in, karena pengguna skrip saya yang lain belum tentu memiliki toolset yang tepat jika tidak built-in.

Terima kasih atas bantuan Anda!

Bintang gelap
sumber
Perintahnya adalah iconv.
bmargulies
@ bmargulies: Ketika saya mencoba ikonv pada file yang disandikan di MacRoman dan mencoba mengubahnya menjadi UTF-8, saya mendapatkan karakter sampah sebagai ganti "karakter tidak biasa" yang asli. Sebagai contoh, elipsis diubah menjadi "Äö√Ѭ∂‚Äö√Ѭ∂". Saya akan mengharapkan elipsis dikonversi dengan anggun menjadi enam periode. Kutipan pintar adalah sama, mereka juga mengubahnya menjadi teks aneh, berubah menjadi "Äö√Ñ√≤". Sintaks yang saya gunakan adalah: cat source.txt | iconv -f MacRoman -t UTF-8> iconv_test.txt Apakah ada sintaksis CLI khusus yang akan memberi tahu iconv untuk mengubah semua teks dengan anggun menjadi penggantian yang sesuai?
Dan argumen apa yang Anda sampaikan?
bmargulies
@ Darkstar - prosedur yang sama berhasil bagi saya. Apakah Anda yakin sumber Anda ada di MacRoman?
Tom Gewecke
1
Excel seharusnya tidak memiliki masalah ini, Anda harus dapat mengatur penyandian untuk impor ke apa pun yang Anda inginkan, mis. Lihat superuser.com/questions/280603/…
Tom Gewecke

Jawaban:

8

Cara lain untuk mengonversi karakter non-ASCII ke varian ASCII adalah dengan menggunakan iconv -t ASCII//TRANSLIT:

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

ASCII//IGNOREakan menghapus karakter non-ASCII, tetapi Anda juga dapat melakukannya dengan misalnya tr -dc '\0-\177'.

Lri
sumber
Apakah iconvmengizinkan untuk transliterasi: ä → a "?
dan
@danielAzuelos saya tidak tahu. Cara mengganti karakter tergantung pada implementasinya: misalnya, ikonv yang datang bersama Debian diganti ädengan adil a.
Lri
28

iconv jelas merupakan alat pilihan di sini:

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

Jalankan iconv --listuntuk melihat daftar semua penyandian yang didukung.

nohillside
sumber
begitu saya tahu bahwa itu bukan MacRoman, tetapi "iso-8859-1", saya mencoba lagi. Itu masih tidak melakukan apa yang saya inginkan. Saya tidak berpikir iconv dapat melakukan apa yang saya inginkan: dengan anggun mengganti semua karakter mewah dengan periode standar dan apostrof dan tanda kutip ganda.
Darkstar