Rilevamento della codifica
Rilevamento della codifica
HTML arriva come byte, e il livello di codifica risponde alla prima domanda di qualsiasi pipeline: quale codifica e quale testo? Il rilevamento segue l’approccio standard — prima i byte-order marks, poi le dichiarazioni nel contenuto.
Rilevamento dai byte
detect_encoding() annusa un flusso di byte e restituisce un EncodingDetectionResult contenente la codifica rilevata, un livello di confidenza e il testo decodificato. Un UTF-8 BOM rileva con certezza, e i byte del BOM vengono rimossi dall’output decodificato:
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)Il toolkit di rilevamento
sniff_bom() ispeziona solo i byte-order marks; prescan_meta_charset() applica il meta-prescan standard per le dichiarazioni di charset all’interno del documento; decode_bytes() esegue la decodifica una volta scelta una codifica. Le codifiche non supportate sollevano il UnsupportedEncodingError tipizzato.
Nomi canonici
Le etichette di codifica variano in natura — latin1, iso-8859-1 e us-ascii significano tutti windows-1252 secondo lo standard di codifica. get_canonical_name() mappa qualsiasi etichetta registrata al suo nome canonico.
Suggerimenti e migliori pratiche
- Fidati del BOM: quando è presente, è definitivo e il rilevatore segnala una certa sicurezza
- Normalizza le etichette tramite
get_canonical_name()prima di confrontare le codifiche - Usa
result.textdalla rilevazione invece di ricodificare i byte da solo
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
| Il BOM appare nel testo decodificato | Decodifica manuale invece di detect_encoding() | Il rilevamento rimuove i byte BOM da result.text |
| Il confronto delle etichette fallisce | Discrepanza tra alias e nome canonico | Normalizza con get_canonical_name() |
UnsupportedEncodingError sollevato | Codifica di input al di fuori del registro | Gestisci l’errore tipizzato; ricodifica a monte |
FAQ
Cosa restituisce la rilevazione?
Un EncodingDetectionResult con encoding, confidence e text decodificato.
Le etichette legacy sono gestite?
Sì — la tabella degli alias mappa le etichette come latin1 e us-ascii alle loro codifiche canoniche.
Il rilevamento legge i meta tag?
prescan_meta_charset() implementa lo standard meta-prescan e partecipa al rilevamento.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
detect_encoding | Rileva la codifica e decodifica i byte |
EncodingDetectionResult | Oggetto risultato della rilevazione |
sniff_bom | Ispezione del Byte-order-mark |
prescan_meta_charset | Standard meta-prescan |
decode_bytes | Decodifica con una codifica scelta |
get_canonical_name | Canonicalizzare un’etichetta di codifica |