如何使用* nix命令行工具将多个文件转换为UTF-8编码?[重复]


Answers:


56

iconv会在许多字符编码之间进行转换。所以添加一点bash魔术,我们可以编写

for file in *.txt; do
    iconv -f ascii -t utf-8 "$file" -o "${file%.txt}.utf8.txt"
done

这将运行iconv -f ascii -t utf-8到所有以结尾的文件.txt,并将重新编码的文件发送到具有相同名称但以.utf8.txt而不是结尾的文件.txt

并不是说这实际上会对您的文件做任何事情(因为ASCII是UTF-8的子集),而是要回答有关如何在编码之间进行转换的问题。


2
您应该引用var $ i,以便处理带空格的文件名。
理查德·霍斯金斯

它将做的事情,它将为一个添加一个BOM ...
jason

您确定iconv将添加BOM吗?我的印象是,UTF-8不会。
理查德·霍斯金斯

5
我刚刚使用iconv(GNU libiconv 1.11)进行了测试,但没有添加BOM。据我了解,iconv仅在输入中存在BOM时才添加BOM,而不会以ASCII形式添加。BOM是有问题的,对于UTF-8来说不是必需的。
理查德·霍斯金斯

2
如果您的iconv版本不支持-o参数,则可以直接将其替换为>>以使用Shell重定向。
抢劫
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.