I was wondering if some text files store their encoding method along their text content for later decoding?
A resposta de Mark Szymanski está correta - não há informações explícitas de codificação em um arquivo de texto simples - essa é a definição de "arquivo de texto simples", o "simples" refere-se ao fato de não haver meta-dados no arquivo.
No entanto, alguns aplicativos colocarão uma marca de ordem de byte (BOM) em arquivos de texto codificados como UTF-16 ou UTF-32 / UCS-4. A lista de materiais não tem como objetivo indicar a codificação (indica a ordem dos bytes, como o nome diz), mas muitos aplicativos usarão a presença da BOM para reconhecer UTF-16 / UTF-32 e servirão como indicador de codificação.
Or is it the text viewer's job to guess the encoding method for a given text file, and the guessing may not always be correct? If yes, how does a text viewer guess that?
Sim, o visualizador de texto só pode adivinhar. Geralmente usa algumas heurísticas:
- Em algumas codificações (principalmente em UTF-8) nem todas as seqüências de bytes são válidas. Portanto, um aplicativo pode tentar decodificar o arquivo como UTF-8. Se tiver êxito, o arquivo provavelmente será UTF-8; se falhar encontrando uma seqüência inválida de bytes, não é. É assim, por exemplo
vim
funciona por padrão: Primeiro, ele tentará usar o UTF-8 ao ler um arquivo; se isso falhar, ele volta para ISO-8859-1. - Na maioria das codificações de 8 bits mais antigas, qualquer sequência de bytes é válida. Nesse caso, você pode, algumas vezes, adivinhar a codificação observando o histograma de bytes (frequência de diferentes seqüências de bytes / bytes). O Internet Explorer costumava fazer isso para "adivinhar" a codificação de uma página. No entanto, isso é muito propenso a erros, portanto, poucos programas fazem isso.
Na maioria dos casos, um programa deve ser explicitamente informado sobre a codificação de um arquivo de texto, caso contrário, ele não poderá lê-lo corretamente.