如何将多个 ISO8859-1 转换为 UTF-8

如何将多个 ISO8859-1 转换为 UTF-8

正在尝试将多个 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/

相关内容