حساسية حالة الأحرف

في أجهزة الكمبيوتر وكذلك في العديد من المواقع، حالة النص قد تكون حساسة لحالة الأحرف (بالإنجليزية: Case Sensitivity)‏ كما يُمكن أن تكون غير حساسة لحالة الأحرف أو بالأحرى غير مكترثة. وفيما يلي بعض الأمثلة على حساسية حالة الأحرف، هذا وتجدر الإشارة إلى أن حساسية حالة الأحرف هذه في بعض الأحيان تكون غير مفعلة:

هناك بعض اللغات البرمجية الحساسة هي الأخرى لحالة الأحرف ولعل أبرزها السي، السي++، الجافا، السي شارب،[1] روبي[2] وكذلك الإكس إم إل، في حين أن هناك لغات برمجة أخرى غير حساسة لحالة الأحرف ولا تأبه إن تمَّ طباعته بشكل كبير (مثلا A) أو بشكله الصغير (a)، ومن بين هذه اللغات هناك الأيدا، البيسيك، الفورتران، الإس كيو إل[3] ثم باسكال. وهناك أيضا لغات أخرى غير حساسة مثل هاسكل، برولوغ ولغة غو التي تهتم بعلم الدلالة الشكلي.

إن البحث عن مجموعة من الحروف أو الكلمات في نص معين قد يكون حساسا لحالة الأحرف وقد يكون لا وذلك حسب نظام التطبيق أو البرنامج ثم اللغة التي تمت برمجته بها، كما يمكن للمستخدم في كثير من الحالات تحديد ما إذا كان يُفضل البحث بحالة حساسة للأحرف من عدمها، على سبيل المثال في معظم برامج تحرير النصوص ومتصفحات الويب هناك إمكانية اختيار تفعيل خاصية حساسية حالة الأحرف أو اختيار إلغائها، وقد أصبحت قضية حساسية حالة الأحرف عند البحث في موقع ما أكثر شمولا في الفترة الأخيرة، فمثلا عند البحث عن "Language" (لاحظ أن الحرف الأول من الكلمة كُتب بشكل كبير)، ثم عند البحث عن "language" (لاحظ أن كل الأحرف صغيرة) ثم البحث عن "LANGUAGE" (كل حروف الكلمة كُتبت بشكل كبير)؛ فإن حساسية حالة الأحرف في هذه الحالة ستأخذ منحى آخر حيث أن لغة الكمبيوتر لن تجد سوى الكلمة «الأساسية»؛ وفي المقابل ستقوم باستبعاد كل الحالات والكلمات غير المرغوب فيها. على سبيل المثال محرك البحث جوجل هو في الأساس حساس لحالة الأحرف عند البحث عن موضوع ما، وكل تغيير في حرف معين سيؤدي إلى نتائج مختلفة ولو نسبيا عن النتائج الأولى.[4] في قاعدة بيانات أوراكل فإن معظم عمليات البحث حساسة لحالة الأحرف وذلك بشكل افتراضي، [5] ونفس الأمر ينطبق على باقي قواعد البيانات حيث أن خاصية الحساسية بالنسبة لحالة الأحرف تأتي مُفعلة مع النظام (تأتي مُفَعَّلَةَ بشكل افتراضي).[6]

إن نظام أو أنظمة الملفات في شبيه يونكس عادة ما تكون حساسة لحالة الأحرف (يُمكن كتابة ملفين؛ فالأول يحمل اسم readme.txt ثم الثاني يحمل اسم Readme.txt في نفس الجهاز[أ]. أما الماك أوس فعادة ما تأتي فيه خاصية حساسية حالة الأحرف مُفعلة بشكل افتراضي، حيث أنه يستخدم HFS+ في حالة الأحرف (ما يعني أنه لا يمكن كتابة ملفين باسم readme.txt وReadme.txt في نفس الجهاز على عكس شبيه يونكس) لكن وفي المقابل يُمكن فتح ملف تحت اسم readme.txt وآخر يحمل نفس اسمه أي readme.txt ونفس الأمر ينطبق عند إنشاء ملف Readme.txt حيث يُمكن بعدها فتح آخر بنفس الاسم أي Readme.txt، لكن هذا قد يشكل خللا أو بالأحرى مشكلة لبعض للمطورين والمستخدمين السلطوين، لأن معظم البيئات الأخرى تكون حساسة من نوع آخر، لذلك فالعديد من التثبيتات تفشل في بسبب قضية حساسية أنظمة الملفات.

أقدم مايكروسوفت ويندوز على جعل نظام الملفات الخاص بـ VFAT وFAT32 غير حساسان لحالة الأحرف، ولكن يتم الحفاظ على الحالة. في وقت سابق كان نظام الملفات FAT12 حساسا لحالة الأحرف لكنه يستطيع الحفاظ على الحالة، فحتى لو فتحت ملف باسم readme.txt ثم آخر باسم ReadMe.txt سيتم حفظ الملفان التمهيديان.[7] وفي وقت لاحق، جعلت ويندوز أنظمة ملفات أخرى مثل NTFS حساسة لحالة الأحرف، لذلك فقد تمكنت من جعل الملفان readme.txt وReadme.txt يقبلان التنزيل أو الفتح في نفس الجهاز، حيث يعتبرهم هذا الأخير ملفان مختلفا الاسم ولو أنهم في الحقيقة متطابقان (الفرق فقط في حجم حرف واحد لا غير).[8]

ملاحظات

  1. ^ لاحظ أنه ليس هناك فرق في اسم الملفين معا، باستثناء أن الثاني يضم حرفا كبيرا بينما الأول يضم نفس الحرف في وضعيته الصغيرة

المراجع

  1. ^ Kernighan، Brian W.؛ دينيس ريتشي (فبراير 1978). "Chapter 2: Types, Operators and Expressions". [[لغة البرمجة سي (كتاب)]] (ط. 1st). Englewood Cliffs, NJ: برنتيس هول ‏. ص. 33. ISBN:0-13-110163-3. مؤرشف من الأصل في 2019-12-15. {{استشهاد بكتاب}}: تعارض مسار مع وصلة (مساعدة)صيانة الاستشهاد: علامات ترقيم زائدة (link)
  2. ^ Matsumoto، Yukihiro (يناير 2002). "Chapter 2: Language Basics". Ruby in a nutshell (ط. 1st). أوريلي ميديا. ص. 9. ISBN:0-596-00214-9. مؤرشف من الأصل في 2019-12-15.
  3. ^ Although one can explicitly set a single database or column collation to be case-sensitive نسخة محفوظة 27 مايو 2019 على موقع واي باك مشين.
  4. ^ "case-sensitive-search - case sensitive google search - Google Project Hosting". Code.google.com. مؤرشف من الأصل في 2015-12-31. اطلع عليه بتاريخ 2013-05-20.
  5. ^ (PDF) https://web.archive.org/web/20180616232752/https://docs.oracle.com/cd/E12151_01/doc.150/e12152.pdf. مؤرشف من الأصل (PDF) في 2018-06-16. {{استشهاد ويب}}: الوسيط |title= غير موجود أو فارغ (مساعدة)
  6. ^ "MySQL :: MySQL 5.0 Reference Manual :: C.5.5.1 Case Sensitivity in String Searches". Dev.mysql.com. مؤرشف من الأصل في 2016-05-10. اطلع عليه بتاريخ 2013-05-20.
  7. ^ "Case Sensitivity in Subsystem for UNIX-based Applications". Technet.microsoft.com. 22 أغسطس 2005. مؤرشف من الأصل في 2016-03-09. اطلع عليه بتاريخ 2013-05-20.
  8. ^ "Filenames are Case Sensitive on NTFS Volumes". Support.microsoft.com. 1 نوفمبر 2006. مؤرشف من الأصل في 2015-02-12. اطلع عليه بتاريخ 2013-05-20.