Cara Mendeteksi Pengkodean Karakter di Python

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_encoding

Langkah 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.

Lihat Juga

 Bahasa Indonesia