Cara Mendeteksi Pengkodean Karakter di Python
Aspose.HTML FOSS untuk Python mendeteksi pengkodean karakter dari byte mentah sesuai dengan standar: byte-order marks pertama, kemudian deklarasi dalam konten. Panduan ini memeriksa aliran byte dan menormalkan label pengkodean, menggunakan pip untuk instalasi.
Panduan Langkah demi Langkah
Langkah 1: Instal Paket
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Langkah 2: Impor Fungsi yang Diperlukan
from aspose_html.encoding.detection import detect_encodingLangkah 3: Deteksi Pengkodean Aliran Byte
Sebuah UTF-8 BOM terdeteksi dengan tingkat kepercayaan tertentu, dan byte BOM dihapus dari teks yang didekode:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)Langkah 4: Normalisasi Label Pengkodean
Label warisan dipetakan ke nama kanonik — latin1, iso-8859-1, dan us-ascii semuanya windows-1252 menurut standar pengkodean. Gunakan get_canonical_name() dari keluarga modul yang sama untuk menormalkan label sebelum perbandingan.
Masalah Umum dan Solusinya
Sebuah BOM muncul di teks yang telah saya dekode. Itu terjadi dengan dekoding manual; detect_encoding() menghapus byte BOM dari result.text.
Perbandingan encoding gagal untuk label yang setara. Bandingkan nama kanonik, bukan label mentah — normalisasi kedua sisi dengan get_canonical_name().
Encoding eksotik menghasilkan kesalahan. Encoding di luar registri memunculkan yang bertipe UnsupportedEncodingError; tangani itu dan enkode ulang di hulu jika memungkinkan.
Pertanyaan yang Sering Diajukan
Apa yang dikembalikan oleh detect_encoding?
Sebuah EncodingDetectionResult dengan encoding yang terdeteksi, tingkat confidence, dan text yang didekode.
Apakah deteksi melihat tag meta?
Ya — meta-prescan standar berpartisipasi melalui prescan_meta_charset() ketika tidak ada BOM.
Apakah saya dapat mendekode secara manual setelah mengetahui enkodingnya?
Ya — decode_bytes() mendekode dengan enkoding yang dipilih.