查找文本文件的编码



我有一堆具有不同编码的文本文件。但是我想将所有转换为utf-8。由于大约有 1000 个文件,我无法手动完成。我知道 llinux 中有一些命令可以将文件的编码从一种编码更改为另一种编码。但我的问题是如何自动检测文件的当前编码?显然,我正在寻找一个命令(比如 FindEncoding($File))来执行此操作:

foreach file
do
$encoding=FindEncoding($File);
uconv -f $encoding -t utf-8 $file;
done

我通常这样做:

for f in *.txt; do
    encoding=$(file -i "$f" | sed "s/.*charset=(.*)$/1/")
    recode $encoding..utf-8 "$f"
done

请注意,重新编码将覆盖文件以更改字符编码。如果无法按扩展名识别文本文件,则可以使用 file -bi | cut -d ';' -f 1 确定它们各自的 MIME 类型。

通过

先检查 UFT-8 来避免不必要的重新编码也可能是一个好主意:

if [ ! "$encoding" = "utf-8" ]; then
    #encode

在此处理之后,可能仍有一些文件具有us-ascii编码。原因是 ASCII 是 UTF-8 的一个子集,除非引入任何无法用 ASCII 表达的字符,否则它仍在使用。在这种情况下,编码将切换到 UTF-8。

相关内容

  • 没有找到相关文章

最新更新