Deteksi Pengkodean

Deteksi Encoding

HTML tiba sebagai byte, dan lapisan pengkodean menjawab pertanyaan pertama dari setiap pipeline: pengkodean apa, dan teks apa? Deteksi mengikuti pendekatan standar — byte-order marks terlebih dahulu, kemudian deklarasi dalam konten.


Mendeteksi dari Byte

detect_encoding() mengendus aliran byte dan mengembalikan sebuah EncodingDetectionResult yang membawa encoding yang terdeteksi, tingkat kepercayaan, dan teks yang telah didekode. Sebuah UTF-8 BOM mendeteksi dengan pasti, dan byte BOM dihapus dari output yang didekode:

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)

Toolkit Deteksi

sniff_bom() memeriksa byte-order marks saja; prescan_meta_charset() menerapkan meta-prescan standar untuk deklarasi charset dalam dokumen; decode_bytes() melakukan dekode setelah encoding dipilih. Encoding yang tidak didukung akan memunculkan UnsupportedEncodingError yang bertipe.

Nama Kanonik

Label pengkodean bervariasi di alam liar — latin1, iso-8859-1, dan us-ascii semuanya berarti windows-1252 menurut standar pengkodean. get_canonical_name() memetakan setiap label terdaftar ke nama kanoniknya.


Tips dan Praktik Terbaik

  • Percayalah pada BOM: ketika ada, itu bersifat definitif dan detektor melaporkan tingkat keyakinan tertentu.
  • Normalisasi label melalui get_canonical_name() sebelum membandingkan pengkodean
  • Gunakan result.text dari deteksi alih-alih mendekode ulang byte sendiri

Masalah Umum

MasalahPenyebabPerbaikan
BOM muncul dalam teks yang didekodekanDekode manual alih-alih detect_encoding()Deteksi menghapus byte BOM dari result.text
Perbandingan label gagalAlias vs nama kanonik tidak cocokNormalisasi dengan get_canonical_name()
UnsupportedEncodingError dikeluarkanEnkoding input di luar registriTangani kesalahan yang ditulis; enkode ulang di hulu

FAQ

Apa yang dikembalikan oleh deteksi?

Sebuah EncodingDetectionResult dengan encoding, confidence, dan text yang terdekripsi.

Apakah label lama ditangani?

Ya — tabel alias memetakan label seperti latin1 dan us-ascii ke enkoding kanonik mereka.

Apakah deteksi membaca meta tag?

prescan_meta_charset() menerapkan standar meta-prescan dan berpartisipasi dalam deteksi.


API Reference Ringkasan

Kelas/MetodeDeskripsi
detect_encodingDeteksi pengkodean dan dekode byte
EncodingDetectionResultObjek hasil deteksi
sniff_bomInspeksi Byte-order-mark
prescan_meta_charsetMeta-pemindaian standar
decode_bytesDekode dengan encoding yang dipilih
get_canonical_nameKanonisasi label encoding

Lihat Juga

 Bahasa Indonesia