是否有Mac OS X命令行应用程序可以将文本编码从一种类型转换为另一种类型?(特别是将Mac OS Roman转换为utf8)


16

我想在Mac OS X 10.8中调用命令行实用程序,它使我能够将以标准Western Mac OS Roman编码保存的文本文件转换为更通用的UTF-8。

我将从我创建的AppleScript中调用该实用程序。使用非常大的文本块时,AppleScript的运行速度非常慢。因此,我想使用OS X命令行进行文本解析和转换。我发现了一个名为“ sed”的工具,它使我能够进行文本解析。但是,文件中仍有许多元素需要清理,如果以utf-8格式打开文件,这些字符将显示为垃圾内容(例如,智能引号和省略号)。

我认为强制文本编码转换可能有助于消除文件中的所有非utf8字符。但是,我看不到“ sed”如何轻松转换文本编码。

我将已经使用内置的AppleScript例程将temp txt文件(如MacRoman)保存到磁盘。

你们是否对可以转换文本编码的内置命令行工具有任何想法?性能和内置命令行,因为脚本的其他用户如果不是内置的,则不一定具有适当的工具集。

谢谢你的帮助!


该命令是iconv。
bmargulies

@bmargulies:当我在MacRoman编码的文件上尝试使用iconv并尝试将其转换为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/...
汤姆Gewecke

Answers:


8

将非ASCII字符转换为ASCII变体的另一种方法是使用iconv -t ASCII//TRANSLIT

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

ASCII//IGNORE会删除非ASCII字符,但是您也可以使用来实现tr -dc '\0-\177'


是否iconv允许音译:A→一”?

@danielAzuelos我不知道。但是,替换字符的方式取决于实现方式:例如,Debian随附的iconv替换ä为just 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.