تقنية

decode_header في بايثون: هل كل قطعة bytes؟

قطعتان ونوعان
تفسير توضيحي [2]

افحص نوع القطعة بجانب ترميزها. [1] [2]

الخلاصة السريعة

لا؛ نوع القطعة يختلف في المثالين. [2]

  • العادي bud يعطي قطعة str. [2]
  • ترميزنا =?utf-8?q?bud?= يعطي bytes. [1] [2]
  • الترميز المرافق None ثم utf-8. [2]
  • المعاد قائمة أزواج؛ ليست نصًا موحدًا. [1] [2]
  • واجهة قديمة على 3.12.14؛ بلا بريد. [1] [2]

المثال

from email.header import decode_header
for s in ("bud","=?utf-8?q?bud?="):
 v,c=decode_header(s)[0]
 print(type(v).__name__,repr(v),c)

[2]

نوعان في قائمة

العادي bud يعطي قطعة str. [2]

ترميزنا =?utf-8?q?bud?= يعطي bytes. [1] [2]

الترميز المرافق None ثم utf-8. [2]

المعاد قائمة أزواج؛ ليست نصًا موحدًا. [1] [2]

النتيجة: نص bud ثم بايتات bud. [2]

قيمة وترميز
تفسير توضيحي [2]

النطاق

الدالة تفك تمثيل الرأس دون تحويل مجموعة المحارف. [1] [2]

واجهة قديمة على 3.12.14؛ بلا بريد. [1] [2]

المراجع

  1. Python 3.12: decode_header legacy API
  2. CPython 3.12.14: header piece types
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.