我使用的是OS X 10.5.5(虽然我猜的并不重要)
我有一组带有花哨字符的文本文件,如双重引号,省略号(“...”)等字符等。
我需要将这些文件转换为旧的普通7位ASCII,最好不要丢失字符含义(也就是说,将这些省略号转换为三个句点,反向引用通常的等等。)
请告知一些智能命令行(bash)工具/脚本来执行此操作。
答案 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
。问题领域是知道如何编码奇数字符,并设计正确的音译序列。我可能会通过改编那个按顺序执行所有映射的脚本来完成它。一次做一个角色会过于繁琐。