Texto ASCII estendido não ISO

2

quando eu tentei saber a codificação do arquivo all.txt usando

$ file all.txt

mostra esta mensagem

all.txt: Non-ISO extended-ASCII text, with very long lines

qual é o tipo dessa codificação de texto ASCII estendido não ISO?

porque eu preciso convertê-lo para outra codificação, então eu preciso saber a codificação deste arquivo

alguma ajuda?

    
por user1200219 05.11.2013 / 06:57

2 respostas

5

É algo que não se parece com utf-8 ou iso-8859-1. Pode ser qualquer outra coisa. Pode até não ser um texto. Esse tipo é uma espécie de descrição de fall-back para qualquer coisa que não contenha zero bytes.

Mesmo que na verdade seja um arquivo de texto (a extensão sugere que possa ser), infelizmente não existe uma maneira automática de descobrir a codificação, porque a maioria das codificações tem o mesmo intervalo de códigos válidos. O Utf-8 pode ser distinguido com muita confiança, mas além disso requer verificação manual.

Primeiro, você precisa descobrir em que idioma o arquivo está para ter uma ideia do conteúdo correto e do conteúdo ilegível e para ter uma lista de possíveis codificações. Porque existem zilhões de codificações, mas apenas alguns foram usados para qualquer idioma em particular.

Do que você precisa para tentar converter o arquivo de cada codificação possível e para cada conversão que tenha sucesso tecnicamente (que infelizmente será a maioria deles), visualize o resultado e verifique se está correto ou não.

Um corretor ortográfico pode ajudar você com a revisão, pois conversões incorretas levarão a mais erros do corretor ortográfico.

Para a conversão, você pode usar iconv (1) , que é instalado a partir do pacote libc em GNU / Linux ou recode . recode tem mais opções e melhor tratamento de erros.

    
por 05.11.2013 / 08:33
6

Isso não vai caber em um comentário, então aqui vai: eu também tinha um arquivo estranho em minhas mãos:

$ file systeminfo.txt 
systeminfo.txt: Non-ISO extended-ASCII text

Eu sabia que isso era gerado por uma instalação alemã do Windows XP e continha alguns caracteres especiais , mas iconv não conseguiu converter para algo sensato:

$ iconv -t UTF-8 systeminfo.txt > systeminfo_utf8.txt 
iconv: illegal input sequence at position 308

Mas como iconv conhece muitas codificações, usei uma abordagem de força bruta para descobrir uma codificação em fonte :

$ iconv --list | sed 's/\/\/$//' | sort > encodings.list
$ for a in 'cat encodings.list'; do
  printf "$a  "
  iconv -f $a -t UTF-8 systeminfo.txt > /dev/null 2>&1 \
    && echo "ok: $a" || echo "fail: $a"
done | tee result.txt

Então, eu passaria pelo result.txt e procuraria a codificação que o não falhou. No meu caso, -f CP850 -t UTF-8 funcionou muito bem, e os umlauts ainda estão lá, só agora codificados em UTF-8: -)

    
por 23.03.2014 / 21:03

Tags