一尘不染

iconv对UTF-8的任何编码

linux

我试图将iconv指向目录,并且无论当前编码如何,所有文件都将转换为UTF-8

我正在使用此脚本,但是您必须指定要使用的编码。如何使其自动检测当前编码?

dir_iconv.sh

#!/bin/bash

ICONVBIN='/usr/bin/iconv' # path to iconv binary

if [ $# -lt 3 ]
then
  echo "$0 dir from_charset to_charset"
  exit
fi

for f in $1/*
do
  if test -f $f
  then
    echo -e "\nConverting $f"
    /bin/mv $f $f.old
    $ICONVBIN -f $2 -t $3 $f.old > $f
  else
    echo -e "\nSkipping $f - not a regular file";
  fi
done

终端线

sudo convert/dir_iconv.sh convert/books CURRENT_ENCODING utf8

阅读 449

收藏
2020-06-07

共1个答案

一尘不染

也许您正在寻找enca

Enca是一位非常幼稚的字符集分析器。它可以检测字符集和文本文件的编码,还可以使用内置转换器或外部库和工具(例如libiconv,librecode或cstocs)将其转换为其他编码。

目前,它独立于语言,支持白俄罗斯语,保加利亚语,克罗地亚语,捷克语,爱沙尼亚语,匈牙利语,拉脱维亚语,立陶宛语,波兰语,俄语,斯洛伐克语,斯洛文尼亚语,乌克兰语,中文以及一些多字节编码。

请注意,通常,自动检测当前编码是一个困难的过程(相同的字节序列可以是多种编码中的正确文本)。enca根据您告诉它要检测的语言使用启发式方法(以限制编码的数量)。您可以enconv用来将文本文件转换为单一编码。

2020-06-07