چگونه رمزگذاری‌های کاراکتر را در Python شناسایی کنیم

چگونه رمزگذاری‌های کاراکتر را در Python شناسایی کنیم

Aspose.HTML FOSS برای Python رمزگذاری‌های کاراکتر را از بایت‌های خام به همان‌گونه که استانداردها تعیین می‌کنند تشخیص می‌دهد: ابتدا علامت‌های ترتیب بایت، سپس اعلامیه‌های داخل محتوا. این راهنما یک جریان بایت را بررسی کرده و برچسب‌های رمزگذاری را نرمال‌سازی می‌کند، با استفاده از pip برای نصب.

راهنمای گام به گام

مرحله ۱: نصب بسته

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

مرحله ۲: وارد کردن توابع مورد نیاز

from aspose_html.encoding.detection import detect_encoding

مرحله ۳: تشخیص رمزگذاری یک جریان بایت

یک UTF-8 BOM با اطمینان معینی تشخیص داده می‌شود و بایت‌های BOM از متن رمزگشایی‌شده حذف می‌شوند:

result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

مرحله ۴: نرمال‌سازی برچسب‌های رمزگذاری

برچسب‌های قدیمی به نام‌های کاننیکال نگاشت می‌شوند — latin1، iso-8859-1 و us-ascii همگی بر اساس استاندارد رمزگذاری windows-1252 هستند. از get_canonical_name() در همان خانواده ماژول برای نرمال‌سازی برچسب‌ها قبل از مقایسه استفاده کنید.

مشکلات رایج و راه‌حل‌ها

یک BOM در متن رمزگشایی‌شده من ظاهر می‌شود. این در زمان رمزگشایی دستی رخ می‌دهد؛ detect_encoding() بایت‌های BOM را از result.text.

مقایسه‌های رمزگذاری برای برچسب‌های معادل شکست می‌خورند. نام‌های کانونی را مقایسه کنید، نه برچسب‌های خام — هر دو طرف را با get_canonical_name().

یک رمزگذاری خارق‌العاده خطا ایجاد می‌کند. رمزگذاری‌های خارج از رجیستری خطای typed را ایجاد می‌کنند UnsupportedEncodingError; آن را مدیریت کنید و در صورت امکان دوباره به‌صورت بالا‌دست رمزگذاری کنید.

سوالات متداول

تابع detect_encoding چه مقداری باز می‌گرداند؟

یک EncodingDetectionResult با encoding شناسایی‌شده، سطح confidence و text رمزگشایی‌شده.

آیا تشخیص به متا تگ‌ها نگاه می‌کند؟

بله — پیش‌اسکن متا استانداردها از طریق prescan_meta_charset() شرکت می‌کند وقتی هیچ BOM‌ای وجود ندارد.

آیا می‌توانم پس از دانستن رمزگذاری، به‌صورت دستی رمزگشایی کنم؟

بله — decode_bytes() با یک رمزگذاری انتخابی رمزگشایی می‌کند.

همچنین ببینید:

 فارسی