我需要找到放在目录中的所有文件的编码.有没有办法找到使用的编码?
该file
命令无法执行此操作.
我感兴趣的编码是:ISO-8859-1.如果编码是其他任何东西,我想将文件移动到另一个目录.
听起来像你在寻找enca
.它可以猜测甚至在编码之间进行转换.只需看一下手册页.
或者,如果失败,请使用file -i
(linux)或file -I
(osx).这将输出文件的MIME类型信息,其中还包括字符集编码.我也找到了一个人工页面 :)
file -bi
如果你喜欢为一堆文件做这个
for f in `find | egrep -v Eliminate`; do echo "$f" ' -- ' `file -bi "$f"` ; done
uchardet - 从Mozilla移植的编码检测器库.
用法:
~> uchardet file.java UTF-8
各种Linux发行版(Debian/Ubuntu,OpenSuse-packman,...)提供二进制文件.
这是一个使用文件-I和iconv的示例脚本,适用于MacOsX对于您的问题,您需要使用mv而不是iconv
#!/bin/bash # 2016-02-08 # check encoding and convert files for f in *.java do encoding=`file -I $f | cut -f 2 -d";" | cut -f 2 -d=` case $encoding in iso-8859-1) iconv -f iso8859-1 -t utf-8 $f > $f.utf8 mv $f.utf8 $f ;; esac done
很难确定它是否是iso-8859-1.如果你的文本只有7位字符,也可能是iso-8859-1,但你不知道.如果您有8位字符,那么上面区域字符也存在于顺序编码中.因此,您必须使用字典来更好地猜测它是哪个单词,并从那里确定它必须是哪个字母.最后,如果你发现它可能是utf-8而不是你确定它不是iso-8859-1
编码是最困难的事情之一,因为你永远都不知道是否有什么东西告诉你