Phát hiện mã hoá

Phát hiện mã hoá

HTML xuất hiện dưới dạng byte, và lớp mã hoá trả lời câu hỏi đầu tiên của bất kỳ pipeline nào: mã hoá nào, và văn bản gì? Phát hiện tuân theo cách tiếp cận tiêu chuẩn — byte-order marks trước, rồi các khai báo trong nội dung.


Phát hiện từ byte

detect_encoding() quét một luồng byte và trả về một EncodingDetectionResult chứa mã hoá đã phát hiện, mức độ tin cậy và văn bản đã giải mã. Một UTF-8 BOM được phát hiện một cách chắc chắn, và các byte BOM được loại bỏ khỏi đầu ra đã giải mã:

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)

Bộ công cụ Phát hiện

sniff_bom() chỉ kiểm tra các dấu byte-order; prescan_meta_charset() áp dụng quá trình quét meta tiêu chuẩn cho các khai báo charset trong tài liệu; decode_bytes() thực hiện giải mã khi đã chọn mã hoá. Các mã hoá không được hỗ trợ sẽ gây ra lỗi kiểu UnsupportedEncodingError.

Tên chuẩn

Các nhãn mã hoá thay đổi trong môi trường thực — latin1, iso-8859-1, và us-ascii đều có nghĩa là windows-1252 theo tiêu chuẩn mã hoá. get_canonical_name() ánh xạ bất kỳ nhãn đã đăng ký nào tới tên chuẩn của nó.


Mẹo và Thực hành Tốt nhất

  • Tin tưởng vào BOM: khi có, nó là quyết định cuối cùng và bộ phát hiện báo cáo mức độ chắc chắn nhất định.
  • Chuẩn hoá các nhãn qua get_canonical_name() trước khi so sánh các mã hoá.
  • Sử dụng result.text từ quá trình phát hiện thay vì tự giải mã lại các byte.

Các vấn đề phổ biến

Vấn đềNguyên nhânKhắc phục
BOM xuất hiện trong văn bản đã giải mãGiải mã thủ công thay vì detect_encoding()Quá trình phát hiện loại bỏ các byte BOM khỏi result.text
So sánh nhãn thất bạiTên bí danh và tên chuẩn không khớpChuẩn hoá với get_canonical_name()
UnsupportedEncodingError đã được kích hoạtMã hoá đầu vào nằm ngoài danh sách đăng kýXử lý lỗi đã gõ; mã hoá lại ở phía trên

FAQ

Phát hiện trả về gì?

Một EncodingDetectionResult với encoding, confidence, và text đã được giải mã.

Các nhãn legacy có được xử lý không?

Có — bảng bí danh ánh xạ các nhãn như latin1 và us-ascii tới các mã hoá chuẩn của chúng.

Phát hiện có đọc các thẻ meta không?

prescan_meta_charset() thực thi tiêu chuẩn meta-prescan và tham gia vào quá trình phát hiện.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
detect_encodingPhát hiện mã hoá và giải mã byte
EncodingDetectionResultĐối tượng kết quả phát hiện
sniff_bomKiểm tra Byte-order-mark
prescan_meta_charsetTiêu chuẩn meta-prescan
decode_bytesGiải mã bằng bộ mã được chọn
get_canonical_nameChuẩn hoá một nhãn mã hoá

Xem thêm

 Tiếng Việt