Ανίχνευση κωδικοποίησης

Ανίχνευση κωδικοποίησης

Ανίχνευση Κωδικοποίησης

HTML φτάνει ως bytes, και η στρώση κωδικοποίησης απαντά στην πρώτη ερώτηση οποιουδήποτε pipeline: ποια κωδικοποίηση, και ποιο κείμενο; Η ανίχνευση ακολουθεί την προσέγγιση των προτύπων — πρώτα byte-order marks, μετά δηλώσεις εντός περιεχομένου.


Ανίχνευση από Bytes

detect_encoding() ανιχνεύει μια ροή bytes και επιστρέφει ένα EncodingDetectionResult που μεταφέρει την ανιχνευθείσα κωδικοποίηση, ένα επίπεδο εμπιστοσύνης και το αποκωδικοποιημένο κείμενο. Ένα UTF-8 BOM ανιχνεύεται ως βέβαιο, και τα bytes του BOM αφαιρούνται από το αποκωδικοποιημένο αποτέλεσμα:

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)

Το Σύνολο Εργαλείων Ανίχνευσης

sniff_bom() εξετάζει μόνο τα byte-order marks· prescan_meta_charset() εφαρμόζει το meta-prescan των προτύπων για δηλώσεις charset εντός εγγράφου· decode_bytes() εκτελεί την αποκωδικοποίηση μόλις επιλεγεί μια κωδικοποίηση. Οι μη υποστηριζόμενες κωδικοποιήσεις προκαλούν την τύπου UnsupportedEncodingError.

Κανονικά Ονόματα

Οι ετικέτες κωδικοποίησης διαφέρουν στην πράξη — latin1, iso-8859-1 και us-ascii σημαίνουν όλα windows-1252 σύμφωνα με το πρότυπο κωδικοποίησης. get_canonical_name() αντιστοιχίζει οποιαδήποτε καταγεγραμμένη ετικέτα στο κανονικό όνομα.


Συμβουλές και βέλτιστες πρακτικές

  • Εμπιστευθείτε το BOM: όταν είναι παρόν, είναι οριστικό και ο ανιχνευτής αναφέρει σίγουρη εμπιστοσύνη
  • Κανονικοποιήστε τις ετικέτες μέσω get_canonical_name() πριν συγκρίνετε τις κωδικοποιήσεις
  • Χρησιμοποιήστε το result.text από την ανίχνευση αντί να επανακωδικοποιήσετε τα bytes μόνοι σας

Συνηθισμένα προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
Το BOM εμφανίζεται στο αποκωδικοποιημένο κείμενοΧειροκίνητη αποκωδικοποίηση αντί για detect_encoding()Η ανίχνευση αφαιρεί τα bytes του BOM από το result.text
Η σύγκριση ετικετών αποτυγχάνειΑσυμφωνία ψευδώνυμου και κανονικού ονόματοςΚανονικοποίηση με get_canonical_name()
Δημιουργήθηκε UnsupportedEncodingErrorΚωδικοποίηση εισόδου εκτός του μητρώουΔιαχειριστείτε το typed error· ξανακωδικοποιήστε upstream

FAQ

Τι επιστρέφει η ανίχνευση;

Ένα EncodingDetectionResult με encoding, confidence και αποκωδικοποιημένο text.

Διαχειρίζονται οι ετικέτες κληρονομίας;

Ναι — ο πίνακας ψευδωνύμων αντιστοιχίζει ετικέτες όπως latin1 και us-ascii στις κανονικές κωδικοποιήσεις τους.

Η ανίχνευση διαβάζει μετα-ετικέτες;

prescan_meta_charset() υλοποιεί το πρότυπο meta-prescan και συμμετέχει στην ανίχνευση.


API Reference Σύνοψη

Κλάση/ΜέθοδοςΠεριγραφή
detect_encodingΑνίχνευση κωδικοποίησης και αποκωδικοποίηση bytes
EncodingDetectionResultΑντικείμενο αποτελέσματος ανίχνευσης
sniff_bomΈλεγχος byte-order-mark
prescan_meta_charsetΜεταπροσκόπηση προτύπων
decode_bytesΑποκωδικοποίηση με μια επιλεγμένη κωδικοποίηση
get_canonical_nameΚανονικοποιήστε μια ετικέτα κωδικοποίησης

Δείτε επίσης

 Ελληνικά