چگونه رمزگذاریهای کاراکتر را در 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() با یک رمزگذاری انتخابی رمزگشایی میکند.