العربية

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

الاختلافات غير المرئية: المسافات غير القابلة للكسر والاقتباسات الذكية ونماذج Unicode

· كيف يعمل

فرق النص يونيكود تصحيح الأخطاء

كتل أسطر متشابهة بصريًا تحتوي على أشكال أحرف مخفية مميزة
الرسم التوضيحي المتجه الأصلي ToolAcre

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

سطران يبدوان متطابقين ولكن تم وضع علامة عليهما على أنهما تم تغييرهما — يتم فتحهما بملف ترجمة تفشل مراجعته بدون سبب واضح

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

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

المسافات غير المنفصلة وأقاربها - تشرح U+00A0 وأحرف المسافة الأخرى التي تدرجها معالجات النصوص ولماذا لا تتطابق المسافة العادية معها

المسافة غير المنفصلة U+00A0 ليست هي نفس الحرف U+0020 المسافة العادية. في الوضع العادي تظل مفاتيح الخطوط الخاصة بها متميزة. ضمن تجاهل المسافة البيضاء، قد يؤدي استبدال المسافة البيضاء إلى تقليل عمليات التشغيل هذه إلى مساحة عادية بعد الاقتطاع، مما يؤدي إلى اختفاء بعض هذه الاختلافات.

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

قد يؤدي وضع المسافة البيضاء إلى طي المسافة البيضاء في Unicode؛ المقارنة العادية تحافظ على شخصيات مميزة

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

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

أحرف ذات عرض صفري وأحرف اتجاهية - تغطي مسافات ذات عرض صفري وروابط وعلامات ثنائية الاتجاه تظهر على أنها لا شيء حتى الآن تغير الخط

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

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

اللهجات المركبة والمتحللة - تشرح تسوية NFC مقابل NFD بحرف معلم كنقطة رمز واحدة مقابل حرف أساسي بالإضافة إلى علامة دمج

قد يتم تمثيل الحرف المحرك كنقطة رمز واحدة مركبة مسبقًا أو كحرف أساسي متبوعًا بعلامة دمج. لا يحتوي المستودع على استدعاء لـ `normalize`، لذا تظل النماذج المتكافئة قانونيًا مختلفة عن سلاسل JavaScript ويمكن أن تنتج صفوف إزالة زائد إضافة.

تثبت مجموعة الاختبار تطابق سلاسل Unicode المتطابقة وأن `café` يختلف عن `cafe`؛ لا يعد بمقارنة علم الحروف. ولذلك تتجنب هذه المقالة الادعاءات المتعلقة بمقارنة البايت أو تكافؤ Unicode الكامل. تتلقى خوارزمية الخط سلاسل وتقارن مفاتيحها المحولة بمساواة صارمة.

تظل العلامات المركبة والمتحللة مختلفة لأن الأداة لا تقوم بإجراء تسوية Unicode

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

يمكن لمفتش الشخصية الكشف عن U+00A0 حيث كان من المتوقع وجود مساحة عادية. استبدله فقط بعد التأكد من متطلبات التنسيق. في المحتوى المترجم، قد تكون المسافات غير المنفصلة عبارة عن اصطلاحات متعمدة لعلامات الترقيم، ويمكن أن يؤدي البحث والاستبدال على نطاق واسع إلى إتلاف الطباعة الصحيحة في مكان آخر.

ما لا يغطيه هذا - تقارير المقارنة التي تختلف الخطوط؛ ولا يقوم بإجراء تطبيع Unicode لك أو استبدال الأحرف

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

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

الوجبات الجاهزة: ثق في الفرق بين عينيك - يخلص إلى أن الخط الذي تم وضع علامة عليه هو فرق حقيقي ويوضح كيف تحدد مقارنة النص في ToolAcre الخطوط التي يجب فحصها

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

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