วิธีตรวจจับการเข้ารหัสอักขระใน Python

วิธีตรวจจับการเข้ารหัสอักขระใน 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() ถอดรหัสด้วยการเข้ารหัสที่เลือก.

ดูเพิ่มเติม

 ภาษาไทย