Eu encontrei uma maneira de fazer isso usando enconv :
enconv -L bulgarian -x utf8 file.txt
Funciona para arquivos UTF-8 e CP-1251.
Eu tenho um diretório contendo arquivos, alguns deles são UTF-8, alguns são CP-1251. Eu quero converter os que são CP-1251 para serem UTF-8, mas sem corromper os arquivos UTF-8.
Eu tentei usar iconv -f cp1251 -t utf8 <...>
, ele funciona para CP-1251, mas se o arquivo já é UTF-8, ele também é convertido e se torna incompreensível.
Eu encontrei uma maneira de fazer isso usando enconv :
enconv -L bulgarian -x utf8 file.txt
Funciona para arquivos UTF-8 e CP-1251.
Você pode obter uma lista de arquivos que não são nem UTF-8 nem US-ASCII usando:
file -0 -i *.txt | awk -F 'file -0 -i *.txt | awk -F '%pre%' '$2 !~ /charset=(us-ascii|utf-8)$/ {print $1}'
' '$2 !~ /charset=(us-ascii|utf-8)$/ {print $1}'
Tags batch conversion utf-8 encoding linux