العربية

أدوات النص واليومية · مجموعة أدوات النص

CR وLF وCRLF: من أين تأتي نهايات الأسطر ولماذا ينقطع النص الملصق

· خلفية

نهايات الأسطر تنظيف النص تصدير البيانات

أحرف إرجاع السطر وأحرف التحكم في تغذية الأسطر تنضم إلى صفوف النص وتفصلها
الرسم التوضيحي المتجه الأصلي ToolAcre

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

التصدير بسطر فارغ بعد كل صف - لماذا يتم لصق ملف من نظام آخر بضعف عدد الأسطر

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

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

يعد الصف الفارغ الإضافي أحد الأعراض، وليس دليلاً على أن CRLF وحده هو السبب في ذلك

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

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

ثلاث اتفاقيات — LF على Unix وmacOS الحديث، CRLF على Windows، CR على Mac OS الكلاسيكي، ولماذا بدا كل منها معقولًا

تستخدم الأنظمة المشابهة لـ Unix وUnix بشكل تقليدي LF لإنهاء السطر، ويتبع نظام التشغيل macOS الحديث هذا التقليد. تستخدم ملفات Windows النصية بشكل تقليدي CRLF. يستخدم نظام التشغيل Mac OS الكلاسيكي CR وحده، لكن نظام التشغيل Mac OS X اعتمد أساس Unix وLF. تظل هذه الاختيارات مرئية عندما تتبادل الأدوات نصًا عاديًا دون الاتفاق على التطبيع.

لا توجد اتفاقية تجعل الكلمات نفسها مختلفة. تظهر المشكلة عند الحدود التي يتوقع قارئها تمثيلًا واحدًا فقط أو ينقسم بسذاجة على كل شخصية تحكم. يقوم محلل سطر قوي بالتحقق من CRLF كزوج قبل التحقق من CR أو LF الوحيد. ToolAcre يفعل ذلك بالضبط باستخدام النمط المرتب ` | | `، ثم ينضم إلى الإخراج المحول باستخدام LF.

ماذا يحدث في مربع نص المتصفح - كيف تتم تسوية فواصل الأسطر بشكل عام عند اللصق وأين لا تزال تظهر الأحرف الضالة

يحدد HTML معالجة خاصة لفواصل الأسطر في عناصر التحكم في النص. في قيمة منطقة النص، تقوم المتصفحات بتطبيع CRLF وCR الوحيد إلى LF في القيمة المكشوفة، في حين أن إرسال النموذج يمكن أن يطبق قواعد بيانات النموذج لفواصل الأسطر. وبالتالي، فإن اللصق الذي يبدو صحيحًا في الصندوق لا يزال من الممكن إجراء تسلسل له بشكل مختلف بواسطة طبقة أخرى أو نسخه إلى برنامج باستخدام اتفاقية أخرى.

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

تقوم المتصفحات بتطبيع فواصل أسطر منطقة النص، لكن تنسيقات الحافظة والتنسيقات النهائية لا تزال مختلفة

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

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

إزالة الأسطر الفارغة تعمل على إصلاح الصفوف الفارغة؛ عادةً ما يكون الاقتطاع غير ضروري بعد قيام ToolAcre بتقسيم الرد الجاهز بشكل صحيح

للحصول على مثال قابل للتكرار، ابدأ بثلاثة أسماء يحتوي تمثيلها الوسيط التالف على صف فارغ بين كل اسم: `Ada`، فارغ، `Grace`، فارغ، `Linus`. يُبلغ عداد الكلمات والأحرف عن خمسة أسطر. يتم مضاعفة هذا عمدا المدخلات؛ سيتم التعرف على تسلسل CRLF الحقيقي وحده كحدود واحدة ولن يؤدي إلى إنشاء تلك الصفوف الفارغة في ToolAcre.

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

مثال عملي: قم بتنظيف عملية تصدير مضاعفة عمدًا وتحقق من عدد الأسطر

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

كما أنه لا يقوم بتشخيص ترميز الأحرف. تتعلق علامة ترتيب البايت UTF-8 واستبدال الماسات وموجيباكي وفشل فك التشفير بكيفية تحول البايتات إلى أحرف، وليس ما إذا كان CR أو LF يفصل هذه الأحرف إلى صفوف. احتفظ بالملف الأصلي وحدد ترميزه باستخدام أداة مناسبة للتعرف على الملفات قبل التعامل مع الرموز المرئية الفردية كنهايات أسطر.

الوجبات الجاهزة — نهايات الأسطر هي تاريخ يمكنك رؤيته؛ تتيح لك أدوات الخط والعداد في مجموعة أدوات النص إصلاح الأعراض في ثوانٍ

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

بالنسبة للمواد الملصقة، افتح مجموعة أدوات النص في `/tools/text/`، ولاحظ عدد الأسطر الأولي، وقم بتطبيق Remove Empty Lines فقط عندما تكون الصفوف الفارغة غير مرغوب فيها حقًا، واستخدم Trim Lines فقط للمسافات البيضاء المحيطة. أعد فحص العد وسجلات العينات بعد ذلك. يحول هذا التدقيق القصير مشكلة التنسيق غير المرئية إلى تحويل نص يمكن التحكم فيه وقابل للعكس.