
Tenho cerca de 700 arquivos que foram resultados de um processo de software de legenda oculta. Posso abrir os arquivos no meu PC ou Mac em uma GUI, mas quando abro no servidor com nano, recebo o seguinte:
��0^@0^@;^@0^@0^@;^@0^@0^@;^@0^@0^@ ^@0^@0^@;^@0^@0^@;^@0^@6^@;^@0^@0^@
^@
^@N^@o^@t^@ ^@A^@v^@a^@i^@l^@a^@b^@l^@e^@
Aqui estão os resultados de algumas das coisas de linha de comando que tentei:
#file infile.txt
infile.txt: data
# file -bi --mime-encoding infile.txt
application/octet-stream; charset=binary
recode ../CR-LF infile.txt
#file -bi --mime-encoding infile.txt
#iconv -f binary -t uff-8 infile.txt > out.txt
iconv: conversions from `binary' and to `uff-8' are not supported
#recode ../CR-LF infile.txt
#recode UTF8..ISO-8859-15 infile.txt
# file -bi --mime-encoding infile.txt
text/plain; charset=utf-16le
#xxd infile.txt | head -5
0000000: fffe 3000 3000 3b00 3000 3000 3b00 3000 ..0.0.;.0.0.;.0.
0000010: 3000 3b00 3000 3000 2000 3000 3000 3b00 0.;.0.0. .0.0.;.
0000020: 3000 3000 3b00 3000 3600 3b00 3000 3000 0.0.;.0.6.;.0.0.
0000030: 0d00 0d0a 004e 006f 0074 0020 0041 0076 .....N.o.t. .A.v
0000040: 0061 0069 006c 0061 0062 006c 0065 00 .a.i.l.a.b.l.e.
O arquivo real é parecido com este (acontece que não foi a melhor escolha, acidentalmente escolhi um sem muita coisa nele):
00;00;00;00 00;00;06;00 Not Available
Então, se eu nano o arquivo, recebo um texto na parte inferior dizendo que ele foi convertido do formato DOS e Mac, mas ainda é lixo. Preciso percorrer os arquivos e importar os dados para um banco de dados, mas é claro que não posso fazer isso se o servidor não conseguir ler o formato.
Gostaria de encontrar uma solução de longo prazo, já que irei gerar muitos deles no futuro e preferiria não usar o Windows PowerShell ou equivalente, mas incorporar a conversão em meu processo.
Responder1
Então a solução para mim acabou sendo usar o recode. Não há muita documentação excelente, mas o truque era usar a opção -f para forçar a alteração.
recode -f UTF-7 *.txt