ما طول السلسلة النصية؟

يعتمد طول السلسلة النصية على ما تقوم بعدّه. يرى الشخص محارف، بينما تعدّ البرامج نقاط الشفرة، أو وحدات شفرة UTF-16، أو البايتات، وغالبًا ما تختلف هذه الأعداد. تبدو الإيموجي 👍🏽 كمحرف واحد، لكنها تتكوّن من نقطتي شفرة، و4 وحدات شفرة UTF-16، و8 بايتات UTF-8. وتُبلغ JavaScript وJava وC# عن وحدات شفرة UTF-16 باعتبارها الطول، بينما تفرض قواعد البيانات غالبًا حدودًا على عدد البايتات، وقد تعدّ حقول النماذج فواصل الأسطر كمحرفين.

وصف الأداة

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

الميزات

  • تعدّ المحارف، ونقاط شفرة Unicode، ووحدات شفرة UTF-16، وبايتات UTF-8
  • تتحقق من الطول مقابل حد أدنى وحد أقصى اختياريين، بالوحدة التي تختارها
  • تعرض عدد الوحدات المتبقية أو الناقصة أو المتجاوزة للحد
  • تقتطع السلسلة النصية الطويلة جدًا دون تقسيم الإيموجي أو الأعلام أو الأحرف ذات العلامات الصوتية
  • يمكنها تجاهل المسافات البيضاء في بداية النص ونهايته
  • يمكنها عدّ فواصل الأسطر باعتبارها CR LF، بالطريقة التي ترسلها بها نماذج HTML

آلية العمل

المحارف هي عناقيد رسومية، أي الوحدات التي يقرأها الشخص كمحرف واحد، ويتم العثور عليها باستخدام تقسيم النص المدمج في المتصفح وفق Unicode. نقاط الشفرة هي قيم Unicode الموجودة في السلسلة النصية. وحدات شفرة UTF-16 هي ما تُرجعه String.length في JavaScript؛ إذ تشغل المحارف الواقعة خارج المستوى متعدد اللغات الأساسي، مثل معظم الإيموجي، وحدتين. بايتات UTF-8 هي حجم السلسلة النصية بعد ترميزها باستخدام UTF-8. يحافظ الاقتطاع على المحارف الكاملة إلى أن يؤدي تضمين المحرف التالي إلى تجاوز الحد الأقصى.

نصائح

  • بالنسبة إلى حد VARCHAR في MySQL أو varchar في PostgreSQL، تحقّق باستخدام نقاط شفرة Unicode. أما بالنسبة إلى حد يعتمد على البايتات، مثل مفتاح فهرس أو حقل في بروتوكول شبكة، فتحقّق باستخدام بايتات UTF-8.
  • تحسب سمة maxlength في مدخل HTML وحدات شفرة UTF-16، ولذلك قد تستهلك الإيموجي وحدتين.
  • ترسل المتصفحات فواصل أسطر حقول textarea بصيغة CR LF، ولذلك قد يعدّ الخادم الذي يتحقق من الطول كل فاصل سطر مرتين. فعّل خيار CR LF للمطابقة.