Não existe uma maneira única e infalível de identificar definitivamente um arquivo UTF-8 apenas de seu conteúdo. Muitos formatos de arquivo podem conter texto codificado UTF-8 * dentro de eles, mas o próprio arquivo não é inerentemente "UTF-8" de uma maneira que um `.jpg` é um JPEG. No entanto, existem fortes indicadores:
Indicadores fortes (mas não garantias): *
Byte Order Mark (Bom): Um arquivo UTF-8 * pode * começar com uma BOM (marca de ordem de bytes), que é a sequência `ef bb bf` em hexadecimal. A presença desse nascimento é uma sugestão muito forte (mas não uma garantia) de que o arquivo é codificado como UTF-8. Muitos editores o adicionam automaticamente, mas alguns não, e sua presença pode até ser problemática em alguns contextos (causando caracteres inesperados no início).
*
Faixa de caracteres: Examine os valores de bytes do conteúdo do arquivo. Embora o UTF-8 possa representar qualquer caractere unicode, as seqüências de bytes são estruturadas. Se você encontrar sequências de bytes fora do que é permitido no UTF-8 (por exemplo, sequências multi-bytes inválidas), é definitivamente * não * UTF-8. No entanto, * todos * bytes que estão dentro do intervalo permitido não garante UTF-8. Você pode ter um arquivo binário que contém acidentalmente apenas sequências de bytes UTF-8 válidas.
Métodos para verificar: 1.
Use um editor de texto com suporte Unicode: A maioria dos editores de texto modernos (notepad ++, texto sublime, código vs etc.) detectará automaticamente a codificação de um arquivo quando você o abrir. Eles geralmente exibem a codificação na barra de status ou propriedades do arquivo. Este é o método mais fácil e confiável para arquivos de texto simples.
2.
use o comando `file` (linux/macOS): O comando `arquivo` pode frequentemente identificar a codificação de um arquivo de texto. Por exemplo:
`` `BASH
arquivar myfile.txt
`` `
Isso pode gerar algo como:`myfile.txt:utf-8 unicode text` ou` myfile.txt:text`ii '. Observe que a precisão depende das heurísticas do comando `arquivo`, que nem sempre pode ser perfeito.
3.
Verifique programaticamente (Python): Você pode escrever um programa curto para verificar o nascimento ou tentar decodificar o arquivo usando o UTF-8. Se a decodificação falhar, não será UTF-8. No entanto, a decodificação bem-sucedida também não prova definitivamente o UTF-8.
`` `Python
importar codecs
def is_utf8 (nome do arquivo):
tentar:
com codecs.open (nome do arquivo, 'r', 'utf-8') como f:
f.read ()
Retornar True # Decodificação bem -sucedida
Exceto UnicodedecodeError:
retornar false # decodificação falhou
filename ="myfile.txt"
se is_utf8 (nome do arquivo):
print (f "{filename} é provavelmente o UTF-8 codificado.")
outro:
print (f "{filename} não é UTF-8 codificado.")
`` `
em resumo: Embora você possa obter dicas fortes sobre se um arquivo provavelmente é codificado UTF-8, não há garantia absoluta sem contexto ou metadados adicionais. Contar com a detecção automática de um editor de texto ou o comando `arquivo` é geralmente a abordagem mais prática. A abordagem programática é útil quando você precisa de mais controle e pode lidar com as incertezas inerentes.