أسباب وعلاجات UnicodeDecodeError [Python]
عندما حاولت قراءة مجموعة بيانات بتنسيق ملف csv مع الباندا ، واجهت على الفور الخطأ "خطأ UnicodeDecode: لا يمكن لبرنامج الترميز" utf-8 "فك تشفير البايت 0x91 في الموضع 1: بايت بداية غير صالح". دوّن ملاحظة.
محتويات الخطأ
اقرأ ملف csv الذي يحتوي على pd.read_csv.ثم ...
استيراد الباندا كـ pd df = pd.read_csv ('data.csv')
>> UnicodeDecodeError: لا يمكن لبرنامج الترميز 'utf-8' فك تشفير البايت 0x91 في الموضع 1: بايت بدء غير صالح
حصلت على خطأ في فك ترميز Unicode (تحويل رمز الحرف إلى حرف).
بالمناسبة ، يُطلق على تحويل الأحرف إلى رموز أحرف اسم الترميز.
سبب
داخل الكمبيوتر الشخصي ، لا يتم التعرف على الأحرف كما هي ، ولكن يتم التعامل معها كأرقام (رموز أحرف) مخصصة لكل حرف مسبقًا.
هناك العديد من أنواع رموز الأحرف حسب اللغة وكيفية تعيين الأرقام. UTF-8 هي إحدى طرق الترميز الخاصة بـ Unicode التي تم تعيينها كمعيار موحد للمعيار العالمي بحيث يمكن استخدامه بأي لغة.
ومع ذلك ، لا يبدو أن UTF-8 مثالي أيضًا (ويكيبيديا:مشاكل يونيكود في البيئة اليابانية)
لا أعرف الحرف الذي تسبب في المشكلة ، ولكن نظرًا لاحتواء ملف csv على أحرف يابانية ، تسبب التحويل الضعيف بين رمز الحرف الياباني و UTF-8 في حدوث خطأ في فك ترميز Unicode. يبدو أنه كان كذلك.
المحلول
عند القراءة باستخدام read_csv () ، حدد تنسيق الترميز من الوسيطة إلى رمز الحرف الياباني (shift_jis ، وما إلى ذلك).
df = pd.read_csv ('data.csv'، encoding = 'shift_jis')
الآن يتم تحميله بشكل جيد.
تنسيق ترميز آخر متوافق مع اللغة اليابانية
بالمناسبة ، هناك العديد من رموز الأحرف التي يمكن أن تعبر عن اليابانية ، وتنفذ Python ما يلي كمعيار. (المرجعي:قائمة ترميزات بايثون القياسية )
- cp932
- euc_jp ، euc_jis_2004 ، euc_jisx0213
- iso2022_jp، iso2022_jp_1، iso2022_jp_2، iso2022_jp_3
- iso2022_jp_2004 ، iso2022_jp_2ext
- shift_jis ، shift_jis _2004 ، shift_jisx0213
ومع ذلك ، لدي انطباع بأنه يمكن قراءته جيدًا باستخدام shift_jis أو cp932 ، وهو مقياس رئيسي.
نقاش
قائمة التعليقات
cp949 كوري ، أليس كذلك؟
الرجاء استخدام cp932.
引用
cp932 | 932، ms932، mskanji، ms-kanji | اليابانية
cp949 | 949، ms949، uhc | الكورية
شكرا لك على نصيحتك.يبدو أنه تم وصف العمود المرجعي خطأً بأنه cp949.لقد صححتها.
كدمة!تم حلها!
كان من المفيد