Detecção de Codificação

Detecção de Codificação

Detecção de Codificação

HTML chega como bytes, e a camada de codificação responde à primeira pergunta de qualquer pipeline: qual codificação, e qual texto? A detecção segue a abordagem padrão — marcas de ordem de byte primeiro, depois declarações no conteúdo.


Detecção a partir de Bytes

detect_encoding() fareja um fluxo de bytes e retorna um EncodingDetectionResult que contém a codificação detectada, um nível de confiança e o texto decodificado. Um UTF-8 BOM detecta com certeza, e os bytes do BOM são removidos da saída decodificada:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

O Kit de Ferramentas de Detecção

sniff_bom() inspeciona apenas marcas de ordem de byte; prescan_meta_charset() aplica a meta-análise padrão para declarações de conjunto de caracteres dentro do documento; decode_bytes() realiza a decodificação uma vez que a codificação é escolhida. Codificações não suportadas lançam o UnsupportedEncodingError tipado.

Nomes Canônicos

Os rótulos de codificação variam na prática — latin1, iso-8859-1 e us-ascii significam windows-1252 de acordo com o padrão de codificação. get_canonical_name() mapeia qualquer rótulo registrado para seu nome canônico.


Dicas e Melhores Práticas

  • Confie no BOM: quando presente, ele é definitivo e o detector relata confiança certa.
  • Normalize os rótulos através de get_canonical_name() antes de comparar codificações.
  • Use result.text da detecção ao invés de re-decodificar os bytes você mesmo.

Problemas Comuns

ProblemaCausaCorreção
BOM aparece no texto decodificadoDecodificação manual em vez de detect_encoding()Detecção remove bytes BOM de result.text
Comparação de rótulo falhaIncompatibilidade entre alias e nome canônicoNormalizar com get_canonical_name()
UnsupportedEncodingError geradoCodificação de entrada fora do registroTratar o erro tipado; reencodar a montante

FAQ

O que a detecção retorna?

Um EncodingDetectionResult com encoding, confidence, e text decodificado.

Os rótulos legados são tratados?

Sim — a tabela de alias mapeia rótulos como latin1 e us-ascii para suas codificações canônicas.

A detecção lê meta tags?

prescan_meta_charset() implementa o padrão meta-prescan e participa da detecção.


Resumo de API Reference

Classe/MétodoDescrição
detect_encodingDetectar codificação e decodificar bytes
EncodingDetectionResultObjeto de resultado da detecção
sniff_bomInspeção de byte-order-mark
prescan_meta_charsetMeta-prescan de padrões
decode_bytesDecodificar com a codificação escolhida
get_canonical_nameCanonizar um rótulo de codificação

Ver também

 Português