วิธีตรวจจับการเข้ารหัสอักขระใน Python
Aspose.HTML FOSS สำหรับ Python ตรวจจับการเข้ารหัสอักขระจากไบต์ดิบตามที่มาตรฐานกำหนด: ตรวจสอบเครื่องหมายลำดับไบต์ก่อน แล้วจึงตรวจสอบการประกาศภายในเนื้อหา คู่มือฉบับนี้จะสแกนสตรีมไบต์และทำให้ป้ายกำกับการเข้ารหัสเป็นมาตรฐานโดยใช้ pip เพื่อติดตั้ง.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพกเกจ
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .ขั้นตอนที่ 2: นำเข้าฟังก์ชันที่ต้องการ
from aspose_html.encoding.detection import detect_encodingขั้นตอนที่ 3: ตรวจจับการเข้ารหัสของสตรีมไบต์
การตรวจจับ UTF-8 BOM ด้วยความเชื่อมั่นบางระดับ และไบต์ของ BOM จะถูกตัดออกจากข้อความที่ถอดรหัส:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)ขั้นตอนที่ 4: ทำให้ป้ายกำกับการเข้ารหัสเป็นมาตรฐาน
ป้ายกำกับแบบเก่าแมปกับชื่อมาตรฐาน — latin1, iso-8859-1 และ us-ascii ทั้งหมดเป็น windows-1252 ตามมาตรฐานการเข้ารหัส ใช้ get_canonical_name() จากชุดโมดูลเดียวกันเพื่อทำให้ป้ายกำกับเป็นมาตรฐานก่อนการเปรียบเทียบ.
ปัญหาทั่วไปและวิธีแก้
BOM ปรากฏในข้อความที่ถอดรหัสของฉัน. นั่นเกิดขึ้นเมื่อทำการถอดรหัสด้วยตนเอง; detect_encoding() ลบไบต์ BOM ออกจาก result.text.
การเปรียบเทียบการเข้ารหัสล้มเหลวสำหรับป้ายกำกับที่เทียบเท่า. เปรียบเทียบชื่อแคนอนิกัล ไม่ใช่ป้ายกำกับดิบ — ทำให้ทั้งสองด้านเป็นมาตรฐานด้วย get_canonical_name().
การเข้ารหัสแปลกใหม่ทำให้เกิดข้อผิดพลาด. การเข้ารหัสที่อยู่นอกทะเบียนทำให้เกิดข้อยกเว้นที่ระบุประเภท UnsupportedEncodingError; จัดการกับมันและทำการเข้ารหัสใหม่ที่ต้นทางหากเป็นไปได้.
คำถามที่พบบ่อย
ผลลัพธ์ของ detect_encoding คืออะไร?
EncodingDetectionResult พร้อมกับ encoding ที่ตรวจพบ ระดับ confidence และ text ที่ถอดรหัสแล้ว.
การตรวจจับดูเมตาแท็กหรือไม่?
ใช่ — การสแกนล่วงหน้าเมตามาตรฐานมีส่วนร่วมผ่าน prescan_meta_charset() เมื่อไม่มี BOM.
ฉันสามารถถอดรหัสด้วยตนเองได้เมื่อรู้การเข้ารหัสหรือไม่?
ใช่ — decode_bytes() ถอดรหัสด้วยการเข้ารหัสที่เลือก.