قد ينسخ طالبان الكلمة نفسها من مصدرين، فتعرضهما الواجهة بالشكل نفسه، لكن قاعدة البيانات تخزن سلسلتين مختلفتين. السبب المحتمل تسلسل حرف أساسي وعلامة دمج مقابل محرف مركب مكافئ قانونياً. في مشروع تخرج هندسة البرمجيات يمكن عرض نقاط الترميز والبايتات ونتيجة المقارنة قبل التطبيع وبعده. يشرح ملحق Unicode رقم 15 أشكال التطبيع ومعنى التكافؤ القانوني والتوافقي، وتوفر مواصفة ECMAScript الدالة String.prototype.normalize. الأداة هنا لتعليم القرار، لا لاختراع قاعدة توحيد عربية شاملة.
افصل ما يراه المستخدم عما تخزنه السلسلة
واجهة المقارنة تعرض النص الأصلي، ثم قائمة مرتبة لنقاط Unicode بأسمائها وقيمها، ثم ناتج NFC أو NFD عند الطلب. أظهر طول السلسلة بوحدات UTF-16 ونقاط الترميز وعدد المحارف الممتدة إذا كانت المكتبة المختارة تدعمها. لا تسمِّ هذه القياسات الثلاثة «عدد الحروف» بالتبادل؛ فالمستخدم يرى وحدات كتابية مركبة، بينما JavaScript يتيح أشكال قياس مختلفة. احتفظ بالمدخل الأصلي في الذاكرة وأظهر التحويل كخطوة منفصلة قابلة للفحص.
ضع التطبيع في خطوة معلومة
التدفق التعليمي: إدخال نص تجريبي، تحقق من Unicode، تحديد الاستخدام (مقارنة قانونية أو عرض أو بحث تقريبي)، تطبيق شكل التطبيع المختار، ثم مقارنة أو تجزئة الناتج. يبدأ NFC وNFD من التكافؤ القانوني؛ أما NFKC وNFKD فيزيلان بعض تمييزات التوافق وقد يفقدان معلومات. لا تطبق NFKC على كل نص حر لمجرد أنه يعطي سلاسل أقصر. إذا كان الحقل معرفاً، تحدد سياسة المنتج نطاقه ويجب توثيق القرار.
مثال يوضح حد القاعدة
أدخل حرفاً عربياً مع علامة تشكيل مكتوبة كنقطة منفصلة، ثم أدخل تمثيلاً مكافئاً قانونياً من مجموعة الاختبار. قارن السلسلتين الخام، ثم NFC وNFD، وسجل النتيجة. لا تفترض أن كل اختلاف بصري له بديل مكافئ، ولا أن كل محرف عربي يحتاج شكلاً مركباً مسبقاً. بعد ذلك ضع التشكيل على كلمة بلا تغيير ولاحظ أن إزالة العلامة ليست تطبيعاً قانونياً تلقائياً. المثال المتوقع أن التمثيلات المكافئة قانونياً يمكن أن توحد، بينما حذف التشكيل أو التطويل أو توحيد الألف لأغراض البحث سياسات خاصة يجب تسميتها.
لا تخلط التطبيع بالتقريب البحثي
اعرض مفتاحين منفصلين: مقارنة قانونية تعتمد Unicode، ومفتاح بحث اختياري تعرفه خدمة المنتج. سياسة البحث قد تطبق إزالة التشكيل أو التطويل أو توحيد أشكال همزة، لكن هذه عمليات تغير التمييز الكتابي وقد تدمج مدخلات كان ينبغي أن تبقى مختلفة. لا تكتب التحويل المقارب فوق النص الأصلي. احتفظ بنسخة العرض ونسخة المقارنة المعيارية وربما مفتاح مشتق مع اسم السياسة وإصدارها. هذا الفصل يقلل المفاجآت في البحث، لكنه لا يقدم حلاً لغوياً للهجات أو الإملاء.
اختبارات المطابقة والارتدادات
استخدم ملف اختبار التطبيع الرسمي المشار إليه في UAX #15، مع حالات عربية تشمل علامات الجمع وترتيبها، ومحارف غير عربية للمقارنة، وسلسلة فارغة ومدخل طويل. اختبر أن NFC ثم NFC مرة أخرى لا يغير النتيجة، وأن واجهة المقارنة لا تبدل المدخل الأصلي، وأن الحفظ يتبع سياسة واحدة على الخادم والعميل. أضف أمثلة للتشكيل والتطويل و«أ» و«ا»، وتأكد أن التطبيق لا يعدها متكافئة قانونياً تلقائياً. يشرح سؤال Unicode عن التطبيع لماذا يستفاد من أشكال معيارية، لكنه لا يقرر سياسة بحث عربية لمنتج بعينه.
الحدود والتسليم الأكاديمي
التطبيع يعالج أنواعاً محددة من اختلافات التمثيل؛ لا يثبت تشابه المعنى ولا يحل قضايا التشابه البصري أو أمن المعرفات وحده. تفرق Unicode بين NFC/NFD وNFKC/NFKD، واختيار الشكل يعتمد المجال. سلّم جدول حالات ورسماً لمسار البيانات وسياسة مقارنة واختبارات آلية. تجنب تنظيف قاعدة بيانات كاملة في العرض، واستخدم fixtures مصطنعة. يصلح الموضوع ضمن مشاريع تخرج في هندسة البرمجيات مع تنفيذ واجهة من خلال المشاريع البرمجية الجامعية. النتيجة الصحيحة قد تكون رفض تحويل عام عندما لا توجد سياسة واضحة.
يمكن أن يضيف الفريق وضعاً لفحص اختلافات قاعدة البيانات دون إرسال النصوص إلى الخادم: يحمّل fixtures معلومة، يقارن الهاش الخام والهاش بعد NFC، ثم يعرض فقط الحالة التي تغيرت. لا تجعل الهاش بديلاً عن تخزين النص أو مصدراً لقرار هويّة الشخص. إذا كانت السلسلة اسم مستخدم أو مفتاحاً، وثّق سياسة التعامل مع المحارف المتشابهة بصرياً كجزء مستقل عن التطبيع. اختبر كذلك نقل البيانات بين متصفحين وخادم بلغة مختلفة، لأن توحيد العميل دون الخادم قد يترك المقارنة غير متسقة. كل نتيجة توضح التحويل المحدد ورقم إصدار Unicode المستعمل.
المصادر
- Unicode Standard Annex #15: Unicode Normalization Forms
- ECMAScript: String.prototype.normalize
- Unicode Normalization FAQ
مراجعة المصادر: .
اختبار المثال وحدوده
اختبارات حتمية على سلاسل مصطنعة ومقارنتها ببيانات Unicode الرسمية؛ لا تغير سجلات حقيقية.
مقالات ذات صلة
الخدمة المرتبطة: تطوير المشاريع البرمجية الجامعية.
أرسل متطلبات مشروعك