تحديد ما إذا كان نوع MIME ثنائيًا أو مستندًا إلى النص

StackOverflow https://stackoverflow.com/questions/3879297

  •  28-09-2019
  •  | 
  •  

سؤال

هل هناك مكتبة تسمح بتحديد ما إذا كان نوع المحتوى المعطى ثنائيًا أم يعتمد على النص؟

بوضوح text/* دائما نصي ، ولكن لأشياء مثل application/json, image/svg+xml او حتى application/x-latex إنه أمر صعب إلى حد ما دون فحص البيانات الفعلية.

هل كانت مفيدة؟

المحلول

هناك غلاف لـ libmagic لـ Python - pymagic. هذه هي أسهل طريقة لإنجاز ما تريد. ضع في اعتبارك أن السحر لا يتجاوز بصمة بصمة. يمكنك الحصول على مواصلات خاطئة إذا كان هناك شيء "يبدو" مثل تنسيق ملف آخر ، ولكن معظم الحالات سوف تمنحك ما تحتاجه.

شيء واحد يجب الانتباه إليه هو "الحل البسيط" للتحقق لمعرفة ما إذا كان أي من الشخصيات "خارج" نطاق ASCII القابل للطباعة ، حيث من المحتمل أن تواجه Unicode الذي سيبدو ثنائيًا (وفي الواقع ، يكون ثنائيًا) على الرغم من أنه مجرد محتوى نصي.

نصائح أخرى

عادةً ما تخبرك البرامج التي تحدد نوع MIME بمجموعة الأحرف. على سبيل المثال، file(1) (و libmagic المقابلة) سوف يعطي الإخراج التالي:

> file --mime-encoding /bin/ls
/bin/ls: binary
> file --mime-encoding /etc/passwd
/etc/passwd: us-ascii
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top