العربية

أدوات المطور · مقارنة النص

طي الحالة أصعب مما يبدو: ماذا يعني "تجاهل الحالة" في Unicode

· خلفية

فرق النص يونيكود حساسية حالة الأحرف

تتقارب مفاتيح الخطوط الكبيرة والصغيرة بينما يظل النموذج الاستثنائي منفصلاً
الرسم التوضيحي المتجه الأصلي ToolAcre

يشرح لماذا يعتبر تجاهل حالة الأحرف أمرًا تافهًا بالنسبة إلى ASCII ودقيقًا بالنسبة إلى Unicode، مع استخدام dotless i وsharp s وfinal sigma كأمثلة، وما يعنيه ذلك بالنسبة لأي مقارنة غير حساسة لحالة الأحرف.

لماذا قد لا تتطابق تهجئتان لاسم إسطنبول - يبدأ الكتاب بعدم تطابق في العالم الحقيقي يشتمل على الحرف الكبير المنقط I الذي يفاجئ المطورين الناطقين باللغة الإنجليزية

تبدو المقارنة غير الحساسة لحالة الأحرف عالمية حتى تختلف المعرفات والنصوص وقواعد اللغة. قاعدة ToolAcre الفعلية واضحة: عند تحديد تجاهل حالة الأحرف، يتلقى كل مفتاح سطر JavaScript `toLowerCase()`، بعد أي تحويل للمسافة البيضاء. ثم تقوم المساواة الصارمة بمقارنة السلاسل الناتجة.

هذه الآلية مفيدة للعناوين أو التسميات العادية، ولكن لا ينبغي توسيع اسمها إلى المساواة اللغوية المدركة للغة المحلية. لا تجمع واجهة المستخدم أي لغة ولا توفر الوظيفة أي لغة. يجب على القراء فحص النتائج عندما تحمل الحالة هوية أو معنى لغوي.

حالة ASCII: بت واحد - تشرح العلاقة البسيطة بين الأحرف الكبيرة والصغيرة التي جعلت علامات تجاهل حالة الأدوات المبكرة سهلة

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

بالنسبة للنص اللاتيني الأساسي، `Hello` و`hello` يصبحان متساويين بموجب الخيار، كما تثبت مجموعة الاختبار. يحدد هذا الاختبار سلوكًا واحدًا، وليس كل تعيينات Unicode. تجنب تحويل مثال إنجليزي عابر إلى وعد بشأن جميع النصوص.

يستدعي التنفيذ JavaScript إلىLowerCase؛ ولا يعرض عملية بت خاصة بـ ASCII

يعد طي حالة Unicode مفهومًا للمقارنة مع قواعد البيانات والحالة الخاصة به. ToolAcre لا يستدعي مكتبة قابلة للطي مسماة، أو يقوم بتطبيع السلاسل أو توثيق إصدار Unicode. إن تسمية هذا التنفيذ بـ "الطي الكامل للحالة" من شأنه أن يشير إلى غياب الآلات.

الوصف الذي يمكن الدفاع عنه هو مقارنة المفاتيح الصغيرة باستخدام محرك JavaScript الحالي. تظل الصفوف الأصلية بدون تغيير للعرض. إذا كانت السلاسل المنخفضة تختلف في الطول أو نقاط الرمز، فسيظل السطر عبارة عن إزالة وإضافة بدلاً من المطابقة القسرية.

ToolAcre ينفذ تعيينًا للأحرف الصغيرة، وليس عملية موثقة لحالة الأحرف في Unicode

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

اختبر القيم الفعلية في البيئة المستهدفة واستشر وثائق Unicode والإعدادات المحلية الموثوقة قبل إنشاء قواعد الهوية. لا ينبغي أن تصبح خانة الاختيار الملائمة للمراجعة المرئية بمثابة مقارنة لاسم المستخدم أو حدود الأمان أو محرك ترتيب متعدد اللغات.

تتطلب استثناءات اللغة المُسمّاة مصادر Unicode خارجية وهي غير مضمونة هنا

قارن `Release Notes` مع `release notes`. يُبلغ الوضع الصارم عن بديل؛ تجاهل تقارير الحالة السطر مطابق ويعرض النص الأيسر الأصلي. أضف علامات الترقيم أو تغيير اللكنة ولاحظ أن الحروف الصغيرة وحدها لا تمحو كل الفرق.

يوضح هذا المثال المتحكم فيه الخيار دون التظاهر بتحديد السلوك الخاص بالبرنامج النصي. عند مراجعة قاموس المصطلحات، قم بتشغيل الوضع الصارم أولاً وقم بتسجيل صفوف الحالة فقط. قم بتبديل الخيار بعد ذلك لفصل ضجيج الكتابة بالأحرف الكبيرة عن التغييرات الإملائية أو علامات الترقيم.

مثال عملي: اختبار المتغيرات اللاتينية العادية دون التعميم على كل نص

لا يظهر أي محدد للغة في واجهة المستخدم، ولا يتلقى `toLowerCase` أي معلمة لغة. وبالتالي، يتم تشغيل نفس رمز التحويل بغض النظر عن اللغة المقصودة للمستند. لا يعرف المسار ما إذا كان الخط تركيًا أو ألمانيًا أو يونانيًا أو معرفًا برمجيًا.

وهذا الغياب هو التحذير العملي. بالنسبة للبحث أو الفرز أو الهوية الذي يعتمد على اللغة، استخدم API المصمم وفقًا لهذه المتطلبات وقم بتثبيت سلوكه بالبيانات المناسبة. فرق النص هو عدسة المراجع على سلسلتين، وليس سياسة تسمية عالمية.

لا يتم توفير أي معلمة محلية بواسطة خيار المقارنة هذا

لا تعد هذه المقالة بالتكافؤ غير اللاتيني أو التطبيع أو الترتيب أو الأمان ضد الأحرف المربكة. لا يمكن للأحرف الصغيرة الإجابة على ما إذا كان هناك اسمان يشيران إلى نفس الشخص أو المنتج أو كائن نظام الملفات. قد تطبق هذه الأنظمة قواعد حالة مختلفة تمامًا.

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

الخلاصة: تجاهل حالة الأحرف من أجل التيسير، وليس من أجل الصحة - يلخص متى يكون الخيار الموجود في مقارنة النص في ToolAcre مناسبًا ومتى يجب فحص النتائج

استخدم تجاهل حالة الأحرف لتوفير الراحة عندما يكون من المعروف أن الكتابة بالأحرف الكبيرة تمثل ضجيجًا للعرض التقديمي. احتفظ بالوضع الصارم للتعليمات البرمجية والمسارات وأسماء المنتجات وأي مجال قد تميز فيه حالة الأحرف القيم. قم بمراجعة كلا الناتجين بدلاً من جعل النتيجة الأكثر مرونة هي السجل الوحيد.

يتميز تنفيذ ToolAcre بالشفافية الكافية ليحدد بدقة: التعامل مع المسافات البيضاء الاختيارية، ثم JavaScript تعيين الأحرف الصغيرة، ثم المساواة الصارمة بين مفتاح السطر. يعد هذا الادعاء المتواضع أكثر فائدة من وعد Unicode الموسع الذي لا يستطيع المصدر دعمه.