@sshannin โพสต์ URL จากบล็อกของ Raymond Chen แต่ใช้ไม่ได้อีกต่อไป บล็อกได้เปลี่ยนซอฟต์แวร์ภายในดังนั้น URL จึงเปลี่ยนไป
หลังจากรวบรวมข้อมูลผ่านกระทู้เก่าในบล็อกใหม่ของฉันได้พบมันนี่
อ้างจากบล็อก:
ทำไม Line Terminator CR + LF?
โปรโตคอลนี้ย้อนกลับไปในสมัยของผู้ผลิตเครื่องพิมพ์ดีดโทรเลข CR ย่อมาจาก“ carriage return” - อักขระควบคุม CR จะส่งคืนหัวพิมพ์ (“ carriage”) ไปที่คอลัมน์ 0 โดยไม่เลื่อนกระดาษไปข้างหน้า LF ย่อมาจาก "linefeed" - อักขระควบคุม LF ทำให้กระดาษสูงขึ้นหนึ่งบรรทัดโดยไม่ต้องขยับหัวพิมพ์ ดังนั้นหากคุณต้องการกลับหัวพิมพ์ไปที่คอลัมน์ศูนย์ (พร้อมที่จะพิมพ์บรรทัดถัดไป) และเลื่อนกระดาษ (เพื่อให้พิมพ์บนกระดาษใหม่) คุณต้องมีทั้ง CR และ LF
หากคุณไปที่เอกสารอินเทอร์เน็ตโปรโตคอลต่างๆเช่น RFC 0821 (SMTP), RFC 1939 (POP), RFC 2060 (IMAP) หรือ RFC 2616 (HTTP) คุณจะเห็นว่าเอกสารทั้งหมดระบุ CR + LF เป็น ลำดับการสิ้นสุดบรรทัด ดังนั้นคำถามที่แท้จริงไม่ใช่ "ทำไม CP / M, MS-DOS และ Win32 จึงใช้ CR + LF เป็นตัวยุติบรรทัด" แต่เป็น "เหตุใดคนอื่นจึงเลือกที่จะแตกต่างจากเอกสารมาตรฐานเหล่านี้และใช้ตัวบอกเลิกบรรทัดอื่น ๆ "
Unix ใช้ LF ธรรมดาเป็นลำดับการสิ้นสุดบรรทัด หากคุณดูตัวเลือก stty คุณจะเห็นว่าตัวเลือก onlcr ระบุว่าควรเปลี่ยน LF เป็น CR + LF หรือไม่ หากคุณตั้งค่านี้ผิดคุณจะได้รับข้อความขั้นแรกโดยที่
each
line
begins
โดยที่บรรทัดก่อนหน้าทิ้งไว้ ดังนั้นแม้แต่ unix เมื่ออยู่ในโหมดดิบก็ต้องใช้ CR + LF เพื่อยุติบรรทัด CR โดยนัยก่อน LF เป็นสิ่งประดิษฐ์ที่ไม่เหมือนใครซึ่งอาจเป็นเศรษฐกิจเนื่องจากประหยัดหนึ่งไบต์ต่อบรรทัด
วงศ์ตระกูลยูนิกซ์ของภาษาซีดำเนินการตามแบบแผนนี้ในมาตรฐานภาษาซีซึ่งต้องการเพียง“ \ n” (ซึ่งเข้ารหัส LF) ในการยุติบรรทัดโดยวางภาระให้กับไลบรารีรันไทม์เพื่อแปลงข้อมูลไฟล์ดิบเป็นเส้นตรรกะ
ภาษาซียังแนะนำคำว่า "newline" เพื่อแสดงแนวคิดของ "generic line terminator" ฉันได้รับแจ้งว่าคณะกรรมการ ASCII ได้เปลี่ยนชื่อตัวละคร 0x0A เป็น "newline" ในราวปี 1996 ดังนั้นระดับความสับสนจึงเพิ่มสูงขึ้น
นี่คือการอภิปรายอีกครั้งของหัวข้อจากมุมมองของยูนิกซ์
ฉันได้เปลี่ยนลิงค์ที่สองนี้เป็นสแนปชอตใน The Wayback Machine เนื่องจากหน้าจริงไม่สามารถใช้งานได้อีกต่อไป
ฉันหวังว่านี้ตอบคำถามของคุณ.