"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا أتلقى خطأ \"UnicodeDecodeError: برنامج الترميز \'utf-8\' لا يمكنه فك تشفير البايت 0xff في الموضع 0: بايت بداية غير صالح\" عند فك تشفير ملف في Python؟

لماذا أتلقى خطأ \"UnicodeDecodeError: برنامج الترميز \'utf-8\' لا يمكنه فك تشفير البايت 0xff في الموضع 0: بايت بداية غير صالح\" عند فك تشفير ملف في Python؟

تم النشر بتاريخ 2024-11-07
تصفح:282

Why am I receiving a \

استكشاف أخطاء 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