Como Detectar Codificações de Caracteres em Python
Aspose.HTML FOSS para Python detecta codificações de caracteres a partir de bytes brutos da forma que os padrões prescrevem: marcas de ordem de bytes primeiro, depois declarações no conteúdo. Este guia analisa um fluxo de bytes e normaliza rótulos de codificação, usando pip para instalação.
Guia Passo a Passo
Etapa 1: Instalar o Pacote
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Etapa 2: Importar Funções Necessárias
from aspose_html.encoding.detection import detect_encodingEtapa 3: Detectar a Codificação de um Fluxo de Bytes
Um UTF-8 BOM detecta com certa confiança, e os bytes do BOM são removidos do texto decodificado:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)Etapa 4: Normalizar rótulos de codificação
Rótulos legados mapeiam para nomes canônicos — latin1, iso-8859-1 e us-ascii são todos windows-1252 de acordo com o padrão de codificação. Use get_canonical_name() da mesma família de módulos para normalizar os rótulos antes das comparações.
Problemas comuns e soluções
Um BOM aparece no meu texto decodificado. Isso acontece com decodificação manual; detect_encoding() remove bytes BOM de result.text.
Comparações de codificação falham para rótulos equivalentes. Compare nomes canônicos, não rótulos brutos — normalize ambos os lados com get_canonical_name().
Uma codificação exótica gera um erro. Codificações fora do registro geram o typed UnsupportedEncodingError; trate-o e recodifique a montante se possível.
Perguntas Frequentes
O que detect_encoding retorna?
Um EncodingDetectionResult com o encoding detectado, um nível confidence e o text decodificado.
A detecção verifica as meta tags?
Sim — o meta-prescan padrão participa via prescan_meta_charset() quando nenhum BOM está presente.
Posso decodificar manualmente assim que souber a codificação?
Sim — decode_bytes() decodifica com uma codificação escolhida.