从命令行将文本转换为7位ASCII

时间:2008-10-17 15:54:15

标签: bash text ascii 7-bit

我使用的是OS X 10.5.5(虽然我猜的并不重要)

我有一组带有花哨字符的文本文件,如双重引号,省略号(“...”)等字符等。

我需要将这些文件转换为旧的普通7位ASCII,最好不要丢失字符含义(也就是说,将这些省略号转换为三个句点,反向引用通常的等等。)

请告知一些智能命令行(bash)工具/脚本来执行此操作。

5 个答案:

答案 0 :(得分:2)

Elinks网络浏览器会将Unicode实体转换为ASCII等价物,为“ - ”提供“ - ”,“......”等提供“......”等内容。有一个python模块{ {3}}使用相同的转换表,将它转换为shell过滤器是很简单的,如下所示:

#!/usr/bin/env python
import elinks
import sys
for line in sys.stdin:
    line = line.decode('utf-8')
    sys.stdout.write(line.encode('ASCII', 'elinks'))

答案 1 :(得分:1)

据我所知,

iconv应该这样做。不是100%肯定它如何处理转换,其中一个输入字符应该/可能成为几个输出字符,例如使用省略号示例......要尝试的东西!

更新:我确实尝试过,看起来它不起作用。它失败了,可能是因为它不知道如何用“较小”的编码表示省略号(我使用的测试字符)。从UTF-8转换为UTF-16很顺利。 :/仍然,iconv可能值得进一步调查。

答案 2 :(得分:1)

查看音译工具;我喜欢Unidecode(在Perl中),并且移植到其他语言并不太难。

答案 3 :(得分:1)

我已经使用iconv将文件从UTF-16LE(通过试验和错误发现的小端)转换为由Windows中的TextPad创建为OSX上的ASCII,如下所示:

 cat utf16file.txt |iconv -f UTF-16LE -t ASCII > asciifile.txt

您也可以管道通过hexdump来查看字符,并确保您获得正确的输出,终端知道如何解释UTF-16并正确显示它,这样你就不能只是说'做'猫'在文件上:

cat utf16file.txt | iconv -f UTF-16LE -t ASCII | hexdump -C 

这显示了带有十六进制字符代码和右侧ASCII字符的布局,您可以在-f“from”参数中尝试不同的编码,以找出您正在处理的内容。

使用'iconv -l'列出iconv可以在您的系统上使用的字符集。

答案 4 :(得分:0)

昨天或前一天有关于文件重命名的问题,我展示了可用于该任务的Perl脚本rename.pl。问题领域是知道如何编码奇数字符,并设计正确的音译序列。我可能会通过改编那个按顺序执行所有映射的脚本来完成它。一次做一个角色会过于繁琐。

问题是:How to rename with prefix/suffix