我试图将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
也许您正在寻找enca:
enca
Enca是一位非常幼稚的字符集分析器。它可以检测字符集和文本文件的编码,还可以使用内置转换器或外部库和工具(例如libiconv,librecode或cstocs)将其转换为其他编码。 目前,它独立于语言,支持白俄罗斯语,保加利亚语,克罗地亚语,捷克语,爱沙尼亚语,匈牙利语,拉脱维亚语,立陶宛语,波兰语,俄语,斯洛伐克语,斯洛文尼亚语,乌克兰语,中文以及一些多字节编码。
Enca是一位非常幼稚的字符集分析器。它可以检测字符集和文本文件的编码,还可以使用内置转换器或外部库和工具(例如libiconv,librecode或cstocs)将其转换为其他编码。
目前,它独立于语言,支持白俄罗斯语,保加利亚语,克罗地亚语,捷克语,爱沙尼亚语,匈牙利语,拉脱维亚语,立陶宛语,波兰语,俄语,斯洛伐克语,斯洛文尼亚语,乌克兰语,中文以及一些多字节编码。
请注意,通常,自动检测当前编码是一个困难的过程(相同的字节序列可以是多种编码中的正确文本)。enca根据您告诉它要检测的语言使用启发式方法(以限制编码的数量)。您可以enconv用来将文本文件转换为单一编码。
enconv