Ανίχνευση κωδικοποίησης
Ανίχνευση Κωδικοποίησης
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 | Κανονικοποιήστε μια ετικέτα κωδικοποίησης |