تقنية

stringprep في بايثون: أي نسخة تحدد المحرف غير المعيّن؟

اختلاف فئة النقطة بين نسختين
نسختان. [1] [2] [3]

قد يختلف التصنيف باختلاف نسخة قاعدة البيانات. [1] [2] [3]

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

جدول A.1 يحتكم إلى Unicode 3.2، لا قاعدة المحارف الأحدث. [1] [2] [3]

  • نختار النقطة U+1F600. [1] [2] [3]
  • الفئتان هنا So Cn: الأحدث ثم القديمة. [1] [2] [3]
  • فحص in_table_a1 يعيد True. [1] [2] [3]
  • النقطة U+FFFF مستثناة رغم فئتها القديمة Cn. [1] [2] [3]
  • اختبرنا 3.12.14، وليس إجراء تجهيز كاملًا. [1] [2] [3]

المثال

import stringprep as s
import unicodedata as u
c=chr(0x1F600)
print(u.category(c),
      u.ucd_3_2_0.category(c))
print(s.in_table_a1(c))

[1] [2] [3]

أي قاعدة يستخدم الجدول؟

المصدر هنا يستورد قاعدة 3.2.0 صراحة. قاعدة unicodedata المعتادة في بيئتنا هي 15.0.0. لذلك لا يناقض تعيين المحرف فيها دخوله جدول النقاط غير المعيّنة قديمًا. [1] [2] [3]

نقطة غير محرفية مستثناة
استثناء. [1] [2] [3]

لماذا لا نكتفي بفئة Cn؟

يستثني المصدر نقاطًا غير محرفية؛ لذا تعطي U+FFFF النتيجة False. لا نستنتج من رفضها أنها معيّنة؛ فئتها القديمة ما زالت Cn. هذا فحص نقطة واحدة، وليس حكمًا بصلاحية اسم نطاق. [1] [2] [3]

المراجع

  1. Python 3.12: stringprep A.1
  2. CPython 3.12.14: stringprep.py
  3. Python 3.12: Unicode databases
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

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

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