سؤال

أرغب في معرفة الفرق (مع أمثلة إن أمكن) بين أنواع كسر أسطر CR LF (Windows) و LF (UNIX) و CR (Macintosh).

هل كانت مفيدة؟

المحلول

الأمر يتعلق فقط بالبايت المخزنة في ملف. CR هو رمز bytecode لعودة النقل (من أيام الآلة الكاتبة) و LF وبالمثل ، لتغذية الخط. إنه يشير فقط إلى البايتات التي يتم وضعها كعلامات نهاية الخط.

طريقة مزيد من المعلومات ، كما هو الحال دائمًا ، على ويكيبيديا.

نصائح أخرى

CR و LF هي أحرف تحكم ، على التوالي ترميزها 0x0D (13 عشرية) و 0x0A (10 عشرية).

يتم استخدامها لتمييز كسر الخط في ملف نصي. كما أشرت ، يستخدم Windows حرفين تسلسل CR LF ؛ يستخدم UNIX فقط LF و MACOS القديم (Macintosh قبل OSX) المستخدمة.

منظور تاريخي ملفق:

كما أشار بيتر, ، cr = إرجاع و LF = سطر تغذية, ، تعبيران لهما جذورهما في الآلات الكاتبة القديمة / tty. قام LF بنقل الورقة إلى الأعلى (لكنه أبقى الموضع الأفقي متطابقًا) وأعا من CR "النقل" بحيث تكون الشخصية التالية المكتوبة في الموضع الأيسر على الورقة (ولكن على نفس الخط). كان CR+LF يفعل كليهما ، أي التحضير لاكتب خط جديد. مع مرور الوقت ، لم تكن الدلالات البدنية للرموز قابلة للتطبيق ، وبما أن مساحة القرص والذاكرة المرنة كانت في قسط ، فقد قرر بعض مصممي نظام التشغيل استخدام أحد الشخصيات فقط ، فهم لم يتواصلوا بشكل جيد مع بعضهم البعض ؛ -)

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

هذا ملخص جيد وجدته:

شخصية عودة النقل (CR) (0x0D, \r) ينقل المؤشر إلى بداية الخط دون التقدم إلى السطر التالي. يتم استخدام هذه الشخصية كشخصية خطية جديدة في كومودور وأنظمة تشغيل Macintosh المبكر (OS-9 وما قبل).

حرف تغذية الخط (LF) (0x0A, \n) ينقل المؤشر إلى السطر التالي دون العودة إلى بداية الخط. يتم استخدام هذا الحرف كحرف خط جديد في أنظمة UNIX (Linux ، Mac OSX ، إلخ)

تسلسل نهاية الخط (EOL) (0x0D 0x0A, \r\n) هو في الواقع حرفان ASCII ، مزيج من أحرف CR و LF. إنه يحرك المؤشر وصولاً إلى السطر التالي وإلى بداية هذا الخط. يتم استخدام هذا الحرف كحرف خط جديد في معظم أنظمة التشغيل غير الأخرى التي لا تونكس بما في ذلك Microsoft Windows و Symbian OS وغيرها.

مصدر

نظرًا لعدم وجود إجابة تفيد هذا فقط ، تم تلخيصها بإيجاز:

إرجاع (MAC قبل OSX)

  • سجل تجاري
  • r
  • رمز ASCII 13

سطر تغذية (Linux ، Mac OSX)

  • LF
  • ن
  • رمز ASCII 10

عودة النقل وتغذية الخط (شبابيك)

  • CRLF
  • r n
  • رمز ASCII 13 ثم رمز ASCII 10

إذا رأيت رمز ASCII بتنسيق غريب ، فهي مجرد الرقم 13 و 10 في قاعدة/قاعدة مختلفة ، وعادة ما تكون قاعدة 8 (أوكتال) أو قاعدة 16 (سداسي عشري).

http://www.bluesock.org/~willg/dev/ascii.html

لدى Jeff Atwood منشور مدونة حديثًا حول هذا: انشقاق الخط الجديد العظيم

ها هو الجوهر من ويكيبيديا:

كان التسلسل CR+LF شائعًا في العديد من أنظمة الكمبيوتر المبكرة التي اعتمدت آلات Teletype ، وعادةً ما تكون ASR33 ، كجهاز وحدة تحكم ، لأن هذا التسلسل كان مطلوبًا لوضع تلك الطابعات في بداية خط جديد. على هذه الأنظمة ، غالبًا ما كان النص مكونًا بشكل روتيني ليكون متوافقًا مع هذه الطابعات ، حيث لم يتم تطوير مفهوم برامج تشغيل الأجهزة التي تخفي تفاصيل الأجهزة هذه من التطبيق بشكل جيد ؛ كان على التطبيقات التحدث مباشرة إلى جهاز Teletype ومتابعة اتفاقياتها. أخفى الفصل بين الوظيفتين حقيقة أن رأس الطباعة لم يتمكن من العودة من أقصى اليمين إلى بداية السطر التالي في وقت واحد. لهذا السبب تم إرسال التسلسل دائمًا مع CR أولاً. في الواقع ، كان من الضروري في كثير من الأحيان إرسال أحرف إضافية (CRS أو NURS الغريب ، والتي يتم تجاهلها) لإعطاء وقت الرأس للانتقال إلى الهامش الأيسر. حتى بعد استبدال Teletypes بأطراف الكمبيوتر مع معدلات أعلى من البذور ، لا تزال العديد من أنظمة التشغيل تدعم الإرسال التلقائي لهذه الأحرف المملوءة ، لتوافق مع أطراف أرخص تتطلب أوقات شخصية متعددة لتمرير الشاشة.

CR - رمز ASCII 13

LF - رمز ASCII 10.

من الناحية النظرية ، يعيد Cr المؤشر إلى الموضع الأول (على اليسار). LF يغذي سطر واحد يتحرك المؤشر سطر واحد لأسفل. هكذا في الأيام الخوالي ، كنت تتحكم في الطابعات وشاشات وضع النص. عادة ما تستخدم هذه الأحرف لتمييز نهاية الخطوط في الملفات النصية. تستخدم أنظمة التشغيل المختلفة اتفاقيات مختلفة. كما أشرت إلى أن Windows يستخدم مجموعة CR/LF بينما تستخدم MACs قبل OSX فقط CR وما إلى ذلك.

الأنظمة التي تعتمد على ASCII أو مجموعة حرف متوافقة ، استخدم إما LF (خلاصة الخط ، 0x0A ، 10 في عشري) أو CR (عودة النقل ، 0x0D ، 13 في عشري) بشكل فردي ، أو CR متبوعًا LF (CR+LF ، 0x0D 0x0A) ؛ تعتمد هذه الأحرف على أوامر الطابعة: أشارت خلاصة الخط إلى أن سطرًا واحدًا من الورق يجب أن يتغذى من الطابعة ، وأشار عودة النقل إلى أن عربة الطابعة يجب أن تعود إلى بداية السطر الحالي.

ها هو تفاصيل.

الحالة المحزنة من "فواصل التسجيل" أو "خطوط الخط" هي إرث من العصور المظلمة للحوسبة.

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

ولكن ذات مرة لم يكن هذا صحيحًا تمامًا. التطبيقات أحرف التحكم المضمنة والمعالجة الخاصة بالجهاز. لم يكن للأنظمة المتوافقة مع الدماغ التي تتطلب كل من CR و LF ببساطة تجريد لفواصل السجلات أو المقاتلات الخطية. كان CR ضروريًا من أجل الحصول على شاشة Teletype أو Video للعودة إلى العمود الأول ، وكان LF (اليوم ، NL ، نفس الرمز) ضروريًا للحصول عليه للتقدم إلى السطر التالي. أعتقد أن فكرة القيام بشيء آخر غير إلقاء البيانات الخام على الجهاز كانت معقدة للغاية.

حدد UNIX و MAC فعليًا التجريد لنهاية الخط ، تخيل ذلك. للأسف ، حددوا منها. (أونيكس ، مهم ، جاء أولاً)

نظرًا لأن جميع برامج التشغيل الخاصة بنا تقريبًا اليوم ، فإن من نسل UNIX أو MAC أو MS Ongerating SW ، نحن عالقون مع الخط الذي ينهي الارتباك.

NL المشتقة من ebcdic nl = x'15 'والتي من شأنها أن تقارن منطقيا بـ crlf x'odoa ascii ... يصبح هذا واضحًا عند نقل البيانات فيزياء من mainframes إلى المدى المتوسط. تم تساوي NL بشكل coloquer (مع استخدام الأشخاص الغامضة فقط EBCDIC) مع CR أو LF أو CRLF

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top