我需要找到放在一个目录中的所有文件的编码。有没有办法找到所使用的编码?

file命令不能做到这一点。

我感兴趣的编码是ISO 8859-1。如果是其他编码,我想将文件移动到另一个目录。


当前回答

听起来你在找恩卡。它可以猜测甚至在编码之间进行转换。看看手册页就知道了。

否则,使用file -i (Linux)或file -i (OS X)。这将输出文件的mime类型信息,其中还将包括字符集编码。我也找到了它的手册页:)

其他回答

我知道您对更一般的答案感兴趣,但是ASCII中的优点通常也适用于其他编码。下面是一个Python单行程序,用于确定标准输入是否是ASCII。(我很确定这在Python 2中可以工作,但我只在Python 3上测试过。)

python -c 'from sys import exit,stdin;exit()if 128>max(c for l in open(stdin.fileno(),"b") for c in l) else exit("Not ASCII")' < myfile.txt

听起来你在找恩卡。它可以猜测甚至在编码之间进行转换。看看手册页就知道了。

否则,使用file -i (Linux)或file -i (OS X)。这将输出文件的mime类型信息,其中还将包括字符集编码。我也找到了它的手册页:)

在Python中,你可以使用chardet模块。

将ISO 8859-1编码转换为ASCII:

iconv -f ISO_8859-1 -t ASCII filename.txt

在Perl中,使用Encode::Detect。