- Eu queria saber se alguns arquivos de texto armazenam seu método de codificação ao longo de seu conteúdo de texto para decodificação posterior?
- Ou é tarefa do visualizador de texto adivinhar o método de codificação para um determinado arquivo de texto, e a suposição nem sempre pode estar correta? Se sim, como um visualizador de texto adivinha isso?
19
Respostas:
A resposta de Mark Szymanski está correta - não há informações de codificação explícitas em um arquivo de texto sem formatação - essa é a definição de "arquivo de texto sem formatação"; a palavra "sem formatação" refere-se ao fato de que não há metadados no arquivo.
No entanto, alguns aplicativos colocam uma marca de ordem de byte (BOM) em arquivos de texto codificados como UTF-16 ou UTF-32 / UCS-4. A BOM não pretende realmente indicar a codificação (indica a ordem dos bytes, como o nome indica), mas muitos aplicativos usarão a presença da BOM para reconhecer UTF-16 / UTF-32, portanto, serve como um indicador de codificação.
Sim, o visualizador de texto pode apenas adivinhar. Geralmente usa algumas heurísticas:
vim
funciona por padrão: Ele primeiro tentará usar UTF-8 ao ler um arquivo; se isso falhar, ele volta ao padrão ISO-8859-1.Na maioria dos casos, um programa deve ser informado explicitamente sobre qual é a codificação de um arquivo de texto, caso contrário, não será capaz de lê-lo corretamente.
fonte
file -bi
funciona se a lista técnica não é usada?file
possui várias heurísticas para determinar o tipo e a codificação do arquivo. Principalmente, ele procura determinadas seqüências de caracteres ou bytes no arquivo. Se você quiser informações mais específicas, provavelmente precisará ler a fonte. Ou apenas faça uma pergunta separada :-).file
não é possível detectar com segurança a maioria das codificações de texto (porque isso é muito difícil). A página do manual possui algumas informações sobre a detecção do conjunto de caracteres - nafile
maioria das vezes, reconhece apenas ASCII, UTF-8/16, EBCDIC e ISO-8859-x. Por exemplo, um arquivo codificado no KOI8-R é relatado como "ISO-8859-1".Arquivos de texto sem formatação não armazenam nenhuma informação sobre sua codificação. Um visualizador determina isso com base na codificação de caracteres que você definiu para ele. Ele não pode determiná-lo por si só, pois é o mesmo para o computador.
fonte
less
egrep
em Unix / Linux fazer isso).