![如何将多个 ISO8859-1 转换为 UTF-8](https://linux22.com/image/1035091/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%9A%E4%B8%AA%20ISO8859-1%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20UTF-8.png)
正在尝试将多个 SQL 文件从 ISO8859-1 转换为 UTF-8
正在执行以下命令:
iconv -f ISO_8859-1 -t UTF-8 *.sql
我得到的是它们的内容输出到终端,输出非常长,并且在输出结束后它们不会转换。它们保持不变。我希望能够转换而不看到输出。
答案1
iconv
默认将其输出发送到 stdout,这解释了您所看到的行为。您可以使用该-o
选项将输出定向到文件,但这只会生成单个输出文件,并且可能不会帮助您更新文件。也许可以尝试以下方法:
for file in *.sql; do
iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
done
这将转换每个文件并将结果存储在临时文件中,如果转换成功则将其移动到原始文件名。
答案2
也可以使用 rsync 来完成此任务,这样做的好处是可以保留备份。如果转换后的文件之一已经在目标编码中,那么就会弄乱它。
rsync -va --iconv=iso88591,utf8 /source/latin1/ /destination/utf8/