Come rilevare le codifiche dei caratteri in Python
Aspose.HTML FOSS per Python rileva le codifiche dei caratteri dai byte grezzi come previsto dagli standard: prima i marcatore di ordine dei byte, poi le dichiarazioni all’interno del contenuto. Questa guida analizza un flusso di byte e normalizza le etichette di codifica, usando pip per l’installazione.
Guida passo-passo
Passo 1: Installa il pacchetto
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Passo 2: Importa le funzioni richieste
from aspose_html.encoding.detection import detect_encodingPasso 3: Rileva la codifica di un flusso di byte
Un UTF-8 BOM rileva con una certa fiducia, e i byte BOM vengono rimossi dal testo decodificato:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)Passo 4: Normalizzare le etichette di codifica
Le etichette legacy corrispondono a nomi canonici — latin1, iso-8859-1 e us-ascii sono tutti windows-1252 secondo lo standard di codifica. Usa get_canonical_name() della stessa famiglia di moduli per normalizzare le etichette prima dei confronti.
Problemi comuni e soluzioni
Un BOM compare nel mio testo decodificato. Questo succede con la decodifica manuale; detect_encoding() rimuove i byte BOM da result.text.
I confronti di codifica falliscono per etichette equivalenti. Confronta i nomi canonici, non le etichette grezze — normalizza entrambe le parti con get_canonical_name().
Una codifica esotica genera un errore. Le codifiche al di fuori del registro sollevano il typed UnsupportedEncodingError; gestiscilo e ricodifica a monte se possibile.
Domande Frequenti
Cosa restituisce detect_encoding?
Un EncodingDetectionResult con il encoding rilevato, un livello confidence, e il text decodificato.
Il rilevamento guarda i meta tag?
Sì — il meta-prescan standard partecipa tramite prescan_meta_charset() quando non è presente alcun BOM.
Posso decodificare manualmente una volta che conosco la codifica?
Sì — decode_bytes() decodifica con una codifica scelta.