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.textdari deteksi alih-alih mendekode ulang byte sendiri
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| BOM muncul dalam teks yang didekodekan | Dekode manual alih-alih detect_encoding() | Deteksi menghapus byte BOM dari result.text |
| Perbandingan label gagal | Alias vs nama kanonik tidak cocok | Normalisasi dengan get_canonical_name() |
UnsupportedEncodingError dikeluarkan | Enkoding input di luar registri | Tangani 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/Metode | Deskripsi |
|---|---|
detect_encoding | Deteksi pengkodean dan dekode byte |
EncodingDetectionResult | Objek hasil deteksi |
sniff_bom | Inspeksi Byte-order-mark |
prescan_meta_charset | Meta-pemindaian standar |
decode_bytes | Dekode dengan encoding yang dipilih |
get_canonical_name | Kanonisasi label encoding |