Kodierungserkennung

Kodierungserkennung

HTML kommt als Bytes, und die Encoding-Schicht beantwortet die erste Frage jeder Pipeline: Welche Encoding und welcher Text? Die Detection folgt dem Standards-Ansatz — byte-order marks zuerst, dann in-content declarations.


Erkennung aus Bytes

detect_encoding() untersucht einen Bytestrom und gibt ein EncodingDetectionResult zurück, das die erkannte Encoding, ein Vertrauensniveau und den dekodierten Text enthält. Ein UTF-8 BOM wird mit Sicherheit erkannt, und BOM-Bytes werden aus der dekodierten Ausgabe entfernt:

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)

Das Detection Toolkit

sniff_bom() prüft ausschließlich byte-order marks; prescan_meta_charset() wendet den Standards-Meta-Prescan für charset-Deklarationen im Dokument an; decode_bytes() führt die Dekodierung durch, sobald eine Encoding gewählt wurde. Nicht unterstützte Encodings werfen die typisierte UnsupportedEncodingError.

Kanonische Namen

Kodierungsbezeichnungen variieren in der Praxis — latin1, iso-8859-1 und us-ascii bedeuten alle windows-1252 gemäß dem Kodierungsstandard. get_canonical_name() ordnet jede registrierte Bezeichnung ihrem kanonischen Namen zu.


Tipps und bewährte Verfahren

  • Vertraue dem BOM: Wenn er vorhanden ist, ist er eindeutig und der Detektor gibt ein gewisses Vertrauen an.
  • Normalisiere Bezeichnungen über get_canonical_name(), bevor du Kodierungen vergleichst.
  • Verwende result.text aus der Erkennung, anstatt die Bytes selbst erneut zu dekodieren.

Häufige Probleme

ProblemUrsacheFehlerbehebung
BOM erscheint im dekodierten TextManuelle Dekodierung statt detect_encoding()Erkennung entfernt BOM-Bytes von result.text
Label-Vergleich schlägt fehlAlias vs kanonischer Name stimmt nicht übereinNormalisieren mit get_canonical_name()
UnsupportedEncodingError ausgelöstEingabekodierung liegt außerhalb des RegistersBehandle den typisierten Fehler; upstream neu enkodieren

FAQ

Was gibt die Erkennung zurück?

Ein EncodingDetectionResult mit encoding, confidence und dekodiertem text.

Werden Legacy-Labels verarbeitet?

Ja — die Alias-Tabelle ordnet Labels wie latin1 und us-ascii ihren kanonischen Codierungen zu.

Liest die Erkennung Meta-Tags?

prescan_meta_charset() implementiert den Standard-Meta-Prescan und beteiligt sich an der Erkennung.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
detect_encodingErkenne die Kodierung und dekodiere Bytes
EncodingDetectionResultErkennungs-Ergebnisobjekt
sniff_bomUntersuchung des Byte-Order-Mark
prescan_meta_charsetMeta-Vorprüfung der Standards
decode_bytesDekodieren mit einer gewählten Kodierung
get_canonical_nameKanonisiere eine Kodierungsbezeichnung

Siehe auch

 Deutsch