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

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

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

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

有帮助吗?

解决方案

Elinks 网络浏览器会将Unicode实体转换为ASCII等价物,例如“ - ” "对于“—”和“......” for“…”等。有一个python模块 python-elinks 使用相同的转换表,将它变成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'))

其他提示

据我所知,

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

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

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

我已经使用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可以在您的系统上使用的字符集。

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

问题是:如何使用前缀/后缀重命名

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top