Come rilevare le codifiche dei caratteri in Python

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_encoding

Passo 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.

Vedi anche

 Italiano