استكشاف أخطاء UnicodeDecodeError في فك تشفير UTF-8 في Python
مواجهة الخطأ "UnicodeDecodeError: لا يمكن لبرنامج الترميز 'utf-8' فك تشفير البايت 0xff في الموضع 0: بايت بداية غير صالحة" يشير إلى أن بايثون تحاول فك تشفير تسلسل بايت باستخدام UTF-8 ولكنها تواجه بايت بداية غير صالح. يحدث هذا عندما تحتوي مصفوفة بايت، يُفترض أنها سلسلة مشفرة بـ UTF-8، على أحرف خارج ترميز UTF-8.
سبب الخطأ
في المثال المقدم، يؤدي فتح ملف باستخدام open(path).read() إلى تشغيل محاولة فك التشفير. نظرًا لأن الملف يحتوي على بايتات غير متوافقة مع UTF-8، تفشل عملية فك التشفير، مما يؤدي إلى حدوث الخطأ.
الحل
لحل هذه المشكلة، لا بد من التعامل مع الملف كملف ثنائي بدلاً من ملف نصي. يمنع هذا بايثون من محاولة فك تشفير البايتات كسلسلة UTF-8.
من خلال تعديل الكود لفتح الملف باستخدام الوضع 'rb'، نجبر بايثون على قراءة الملف كملف ثنائي:
with open(path, 'rb') as f:
contents = f.read()
يؤدي تحديد 'b' في وسيطة الوضع إلى توجيه Python للتعامل مع الملف كتدفق ثنائي، مما يضمن بقاء المحتويات ككائن بايت، دون أي محاولة لفك التشفير.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3