ความแตกต่างระหว่าง '\ n' และ '\ r \ n'


99

ใช่ใช่ผมทราบว่า'\n'เขียนขึ้นบรรทัดใหม่ในระบบปฏิบัติการยูนิกซ์ในขณะที่สำหรับ Windows '\r\n'มีลำดับสองตัวอักษร: ทั้งหมดนี้เป็นสิ่งที่ดีมากในทฤษฎี แต่คำถามของฉันคือทำไม ? เหตุใดอักขระการคืนตลับหมึกจึงมีความพิเศษใน Windows หาก UNIX สามารถทำได้ในกรณีที่\nใช้ Windows สองตัวเพื่อทำสิ่งนี้

ฉันกำลังอ่านหนังสือ Python ของ David Beazley และเขาพูดว่า:

ตัวอย่างเช่นบน Windows การเขียนตัวอักษร '\ n' จริง ๆ แล้วจะส่งออกลำดับสองตัวอักษร '\ r \ n' (และเมื่ออ่านไฟล์กลับมา '\ r \ n' จะถูกแปลกลับเป็น '\ n' เดียว ตัวอักษร)

ทำไมต้องใช้ความพยายามพิเศษ

ฉันจะซื่อสัตย์ ฉันรู้จักความแตกต่างมาเป็นเวลานาน แต่ไม่เคยใส่ใจที่จะถามว่าทำไม ฉันหวังว่าจะได้รับคำตอบในวันนี้

ขอบคุณที่สละเวลา.


5
มันก็ควรจะตั้งข้อสังเกตว่า Windows \r\nไม่ได้เป็นคนเดียวที่ใช้ มันถูกใช้โดยโปรโตคอลอินเทอร์เน็ตที่เป็นข้อความส่วนใหญ่ (เช่น SMTP, HTTP, ฯลฯ ) ด้วยเหตุผลส่วนใหญ่เช่นเดียวกับ Windows (เช่นประวัติ)
Dean Harding

3
นอกจากนี้เมื่ออยู่ใน Java และการใช้สตริงรูปแบบ (เช่นSystem.out.printf()หรือString.format()) ให้แน่ใจว่าคุณใช้%nเป็น CRLF ของคุณเพื่อวัตถุประสงค์ในการทำงานร่วมกันได้ของระบบปฏิบัติการ \nเลิกใช้แล้ว
Gary Rowe

ฉันเคยเห็น\n\rหลายครั้ง (ฉันคิดว่ามันเป็นอะไรบางอย่างจาก NetWare)
grawity


1
มีโปรแกรม Windows เพียงไม่กี่โปรแกรมที่ต้องใช้ CRLF CRLF อาจเป็นค่าเริ่มต้น แต่เกือบทุกอย่างจะตรวจสอบอัตโนมัติและใช้ LF ได้ดี ฉันมีเครื่องมือแก้ไขข้อความทั้งหมดใน Windows ที่กำหนดค่าให้ใช้ LF สำหรับไฟล์ใหม่ทั้งหมดและมันก็ไม่เป็นปัญหา
เควิน

คำตอบ:


124

ความเข้ากันได้ย้อนหลัง

Windows สามารถใช้งานร่วมกับ MS-DOS ได้ (แบบก้าวร้าวดังนั้น) และ MS-DOS ใช้การประชุม CR-LF เพราะ MS-DOS เข้ากันได้กับ CP / M-80 (โดยบังเอิญ) ซึ่งใช้การประชุม CR-LF เพราะนั่น เป็นวิธีที่คุณขับเครื่องพิมพ์ (เพราะเดิมทีเครื่องพิมพ์เป็นเครื่องพิมพ์ดีดที่ควบคุมด้วยคอมพิวเตอร์)

เครื่องพิมพ์มีคำสั่งแยกต่างหากเพื่อเลื่อนกระดาษขึ้นหนึ่งบรรทัดไปยังบรรทัดใหม่และคำสั่งแยกต่างหากสำหรับส่งคืนแคร่ตลับหมึก (ที่ติดตั้งกระดาษ) กลับไปที่ขอบซ้าย

นั่นเป็นเหตุผล และใช่มันเป็นเรื่องน่ารำคาญ แต่เป็นส่วนหนึ่งของแพ็คเกจที่อนุญาตให้ MS-DOS ชนะ CP / M และ Windows 95 ชนะ GUI อื่น ๆ ทั้งหมดที่อยู่ด้านบนของ DOS และ Windows XP จาก Windows 98

(หมายเหตุ: เครื่องพิมพ์เลเซอร์ที่ทันสมัยยังคงมีคำสั่งเหล่านี้เพราะพวกเขาก็เข้ากันได้กับเครื่องพิมพ์ก่อนหน้า - HP โดยเฉพาะอย่างยิ่งทำสิ่งนี้ได้ดี)

สำหรับผู้ที่ไม่คุ้นเคยกับเครื่องพิมพ์ดีดที่นี่เป็นวิดีโอที่แสดงให้เห็นว่าการพิมพ์ที่ทำ: http://www.youtube.com/watch?v=LJvGiU_UyEQ โปรดสังเกตว่ากระดาษถูกเลื่อนขึ้นก่อนจากนั้นแคร่จะถูกส่งคืนแม้ว่ามันจะเกิดขึ้นในการเคลื่อนไหวที่เรียบง่าย ding แจ้งให้พนักงานพิมพ์ดีดทราบว่าอวสานใกล้จะถึงแล้วและเตรียมพร้อมสำหรับมัน


3
Unix กับ \ n ใช้เพื่อทำงานกับเครื่องพิมพ์เก่าเหล่านั้นได้อย่างไร ฉันคิดว่าพวกเขามี Unix Consoles เชื่อมต่อกับเครื่องพิมพ์ประเภทเครื่องพิมพ์ดีดหรือไม่?
Senthil Kumaran

3
@Senthil ใน Unix อักขระขึ้นบรรทัดใหม่จะถูกแปลงโดยไดรเวอร์ปลายทาง มันเป็นการตัดสินใจออกแบบที่แตกต่าง

2
@Senthil เพื่อให้แม่นยำในเครื่องพิมพ์ Unix และเทอร์มินัลที่มีการสรุปในระบบปฏิบัติการและคำอธิบายของพวกเขากำหนดลำดับไบต์ที่จะสร้างขึ้นสำหรับอุปกรณ์ CP / M ไม่มีสิ่งที่เป็นนามธรรมเหลือทิ้งไว้ให้กับโปรแกรมที่กำลังทำงานอยู่ - นี่เป็นไปได้มากที่สุดเพราะสิ่งนี้ไม่จำเป็นสำหรับทุกโปรแกรมดังนั้นการที่มันมีอยู่ในระบบปฏิบัติการท้องถิ่นจะทำให้หน่วยความจำอันมีค่าจากโปรแกรมไม่ต้องการ โปรดจำไว้ว่า CP / M ถูกออกแบบมาสำหรับ 16 กิโลไบต์ระบบ

1
"คุณสมบัติการออกแบบที่สำคัญของระบบขนส่งที่ทันสมัยที่สุดในโลกนั้นถูกกำหนดโดยความกว้างของลาของม้า" และด้วยซอฟต์แวร์นี้เช่นกัน astrodigital.org/space/stshorse.html
Ryan Michela

1
@ Ryan ตำนานเมือง debunked

20

เท่าที่ฉันรู้เรื่องนี้กลับมาอีกครั้งกับวันของเครื่องพิมพ์ดีด

\r คือ carriage return ซึ่งเป็นสิ่งที่เคลื่อนไหวที่คุณพิมพ์บนหน้ากระดาษกลับไปทางซ้าย (หรือถูกต้องหากเป็นวัฒนธรรมของคุณ)

\n เป็นบรรทัดใหม่ที่จะย้ายกระดาษของคุณขึ้นบรรทัด

การทำหนึ่งในสิ่งเหล่านี้บนเครื่องพิมพ์ดีดจะทำให้คุณผิดตำแหน่งเพื่อเริ่มเขียนบรรทัดใหม่ของข้อความ

เมื่อคอมพิวเตอร์มาถึงฉันเดาว่าบางคนเก็บรูปแบบเก่าไว้ แต่คนอื่นรู้ว่ามันไม่จำเป็นและห่อหุ้มบรรทัดใหม่เป็นตัวละคร


7
เหตุใด Windows จึงยังคงยึดติดอยู่กับมัน
sukhbir

8
ความเข้ากันได้ย้อนหลัง ลองนึกภาพว่าเอกสารข้อความจะมีจำนวนเท่าไรหากพวกเขาเปลี่ยนไปตอนนี้
Matt Ellen

4
พูดอย่างเคร่งครัด "คี่บอล" นี่คือ unixoid 'ใช้ newline only' เสร็จแล้วตอนแรก (ฉันเชื่อว่า) เพื่อให้จำนวนตัวละครที่เก็บไว้ลง (แปลเป็น CR LF จะทำในไดรเวอร์เทอร์มินัลมันเป็นธง 'onlcr' ที่ควบคุมมันสำหรับการส่งออก
Vatine

3
Windows มีรุ่นก่อนชื่อ DOS ซึ่งมีการสิ้นสุดบรรทัดเดียวกัน Windows ยังคงความเข้ากันได้ DOS มีรุ่นก่อน ๆ นั่นคือ CP / M ที่ใช้ยัง CRLF DOS เก็บเข้ากันได้ การพัฒนา CP / M ได้รับอิทธิพลจาก DECs TOPS และคุณสามารถเดาได้ว่าพวกเขาใช้ใคร :-) ความเข้ากันได้อธิบายมาก
Mnementh

5
ตกลง แต่ทำไม Notepad ยังไม่รู้จักจุดสิ้นสุดของบรรทัด "\ n"
dan04

8

ฉันไม่รู้ว่านี่เป็นความรู้ทั่วไปหรือไม่ แต่ควรสังเกตว่า CR ยังคงเป็นที่เข้าใจกันโดยผู้เลียนแบบเทอร์มินัลสมัยใหม่:

$ printf "hey world\rsup\n"
sup world

มันมีประโยชน์สำหรับตัวบ่งชี้ความคืบหน้าเช่น

for i in {1..100}
do
    printf "\rLoading... %d%%" $i
    sleep 0.01
done
echo

1
ในเครื่องพิมพ์บรรทัด IBM เก่า (เช่น 1403) การประชุมคือการปฏิบัติต่ออักขระตัวแรกของบัฟเฟอร์บรรทัดเป็นอักขระควบคุมการขนส่ง ช่องว่างหมายถึงการเลื่อนไปหนึ่งบรรทัดและพิมพ์ บวกหมายถึงละเว้นเว้นวรรคและใช้เช่นขีดเส้นใต้ เลขศูนย์หมายถึงการเว้นวรรคสองครั้งและลบด้วยการเว้นวรรคสามครั้ง ระยะห่าง '1' ไปยังด้านบนของหน้าถัดไปและตัวเลขอื่น ๆ ขั้นสูงถึงตำแหน่งแนวตั้งที่ผู้ใช้กำหนด (ใช้เพื่อกรอกแบบฟอร์มที่พิมพ์ล่วงหน้า)
จอร์จ

7

ในอดีตฟีดบรรทัดหมายความว่าลูกกลิ้ง - ลูกกลิ้งที่คุณพิมพ์ - หมุนหนึ่งบรรทัดทำให้ข้อความปรากฏในบรรทัดถัดไป ... แต่ในคอลัมน์ถัดไป

Carriage return แปลว่า "คืนบิตที่คุณพิมพ์ไปยังจุดเริ่มต้นของบรรทัด"

Windows ใช้ CR + LF เนื่องจาก MS-DOS ทำเพราะ CP / M ทำเพราะสมเหตุสมผลสำหรับสายอนุกรม

Unix คัดลอกการประชุม \ n เนื่องจาก Multics ทำ

ฉันสงสัยว่าถ้าคุณขุดไปไกลพอคุณจะพบความขัดแย้งทางการเมืองระหว่างผู้ดำเนินการ!

(คุณหมดความสนุกลงไปเล็กน้อยโดยที่การประชุมของ Mac คือ (หรือเคยเป็นมาก่อน) เพื่อใช้ CR เพื่อแยกบรรทัดและตอนนี้ Unicode ก็มีตัวแยกบรรทัดของตัวเอง U + 2028!)


ว้าว! ไม่ทราบเกี่ยวกับเครื่อง Mac ...
ไมเคิล K

ฉันไม่แน่ใจว่าคุณจะพบความขัดแย้งทางการเมือง อาจเป็นไปได้ว่าคุณจะพบคนที่ทำสิ่งที่คล้ายกันอย่างอิสระ
David Thornley

1
เมื่อมีหน่วยงานมาตรฐานที่แตกต่างกันมีส่วนร่วม? ฉันประหลาดใจที่ไม่พบเหตุผลทางการเมือง!
Frank Shearar

6

ประวัติของอักขระขึ้นบรรทัดใหม่ (Wikipedia):

ASCII ได้รับการพัฒนาพร้อมกันโดย ISO และ ASA ซึ่งเป็นหน่วยงานก่อนหน้าของ ANSI ในช่วงปี 2506-2511 มาตรฐานฉบับร่าง ISO สนับสนุนการใช้ CR + LF หรือ LF เพียงอย่างเดียวเป็นบรรทัดใหม่ในขณะที่ร่าง ASA รองรับเฉพาะ CR + LF

ลำดับ CR + LF เป็นสิ่งที่ใช้กันทั่วไปในระบบคอมพิวเตอร์ยุคแรก ๆ ที่ใช้เครื่องโทรพิมพ์โดยทั่วไปคือ ASR33 เป็นอุปกรณ์คอนโซลเพราะลำดับนี้จำเป็นต้องวางตำแหน่งเครื่องพิมพ์เหล่านั้นเมื่อเริ่มต้นบรรทัดใหม่ ในระบบเหล่านี้ข้อความมักถูกจัดทำเป็นประจำเพื่อให้เข้ากันได้กับเครื่องพิมพ์เหล่านี้เนื่องจากแนวคิดของไดรเวอร์อุปกรณ์ที่ซ่อนรายละเอียดฮาร์ดแวร์ดังกล่าวจากแอปพลิเคชันยังไม่ได้รับการพัฒนาอย่างดี แอปพลิเคชันต้องพูดคุยโดยตรงกับเครื่องโทรพิมพ์และทำตามอนุสัญญา

การแยกฟังก์ชั่นทั้งสองนั้นปิดบังข้อเท็จจริงที่ว่าหัวพิมพ์ไม่สามารถย้อนกลับจากทางขวาสุดไปจนถึงจุดเริ่มต้นของบรรทัดถัดไปในเวลาเดียวได้ นั่นคือเหตุผลที่ลำดับถูกส่งไปพร้อมกับ CR ก่อนเสมอ ในความเป็นจริงมันมักจะจำเป็นต้องส่งตัวอักษรพิเศษ (ภายนอก CRs หรือ NULs ซึ่งถูกละเว้น) เพื่อให้เวลาหัวพิมพ์เพื่อย้ายไปที่ขอบด้านซ้าย

แม้หลังจากที่คอมพิวเตอร์ถูกแทนที่ด้วยเทอร์มินัลคอมพิวเตอร์ที่มีอัตรารับส่งข้อมูลที่สูงขึ้นระบบปฏิบัติการหลายระบบยังคงรองรับการส่งอักขระเติมเหล่านี้โดยอัตโนมัติ

MS-DOS (1981) นำ CR + LF ของ CP / M มาใช้ การใช้ CR + LF ของ CP / M นั้นสมเหตุสมผลสำหรับการใช้คอมพิวเตอร์ผ่านสายอนุกรม ข้อตกลงนี้ได้รับการสืบทอดโดยระบบปฏิบัติการ Windows ในภายหลังของ Microsoft

ระบบปฏิบัติการ Multics เริ่มพัฒนาในปี 1964 และใช้ LF เพียงอย่างเดียวเป็นบรรทัดใหม่ Unix ปฏิบัติตาม Multics practice และต่อมาระบบก็ใช้ Unix


บนเทอร์มินัลคีย์บอร์ดเครื่องพิมพ์ IBM 2741 ส่วนประกอบเครื่องพิมพ์คือเครื่องพิมพ์ดีดลูกพิมพ์ดีด IBM Selectric แบบตีกลับ การเปลี่ยนเป็นตัวพิมพ์ใหญ่ทำให้ลูกบอลหมุนโดยใช้เวลาเพิ่ม ในรหัสอักขระ EBCDIC อักขระตัวพิมพ์ใหญ่มี 1 บิตในตำแหน่งที่ 6 ดังนั้น EBCDIC ว่างเปล่า (0x40) เป็นตัวพิมพ์ใหญ่! หากคุณกำลังพิมพ์เอกสารที่มีความยาว (เช่นวิทยานิพนธ์) คุณสามารถเพิ่มความเร็วในการส่งออกได้อย่างมากโดยการแปลช่องว่างระหว่างคำตัวพิมพ์เล็กเป็น NULs หรือตัวพิมพ์เล็กช่องว่าง (พวกเขาใช้อักขระอื่น IL ถ้าหน่วยความจำทำหน้าที่ เมื่อกลับหรือแท็บ)
จอร์จ

5

ผู้ใช้ถามว่า "ทำไม Unix สามารถทำได้\nและไม่ใช่ Windows" มันเป็นคำถามที่แปลกมาก

  1. ระบบปฏิบัติการแทบไม่มีส่วนเกี่ยวข้องเลย มันเป็นเรื่องของวิธีที่แอพไลบรารีโปรโตคอลและรูปแบบไฟล์จัดการกับสิ่งต่าง ๆ นอกเหนือจากที่ระบบปฏิบัติการอ่าน / เขียนการกำหนดค่าแบบข้อความหรือคำสั่งบรรทัดคำสั่งมันไม่มีเหตุผลที่จะผิดระบบปฏิบัติการ
  2. แอพ Windows ส่วนใหญ่สามารถอ่านได้ทั้งคู่\nและ\r\nใช้ได้ พวกเขายังส่งออก\r\nเพื่อให้ทุกคนมีความสุข โปรแกรมไม่เพียง "ทำ" อย่างใดอย่างหนึ่ง\nหรือ\r\n- ยอมรับโปรแกรมหนึ่ง ๆ อีกโปรแกรมหนึ่งหรือทั้งสองอย่างและเอาพุตหนึ่งโปรแกรมอีกโปรแกรมหนึ่งหรือทั้งสองอย่าง
  3. ในฐานะโปรแกรมเมอร์มันแทบจะไม่รบกวนคุณเลย แทบทุกภาษา / แพลตฟอร์มมีสิ่งอำนวยความสะดวกในการเขียนบรรทัดสุดท้ายที่ถูกต้องและอ่านได้อย่างสมบูรณ์ที่สุด เวลาเท่านั้นที่ฉันได้มีการจัดการกับปัญหาที่เกิดขึ้นก็คือตอนที่ผมเขียนเซิร์ฟเวอร์ HTTP - และมันเป็นเพราะเบราว์เซอร์บางอย่าง (คำใบ้: ถัดจากเบราว์เซอร์ที่นิยมมากที่สุดหลังจาก IE) ทำ\nแทนการที่ถูกต้อง \r\n
  4. คำถามที่ตรงประเด็นมากกว่านั้นคือทำไมแอพ Unix สมัยใหม่จำนวนมากจึง\nรู้เพียงว่ามีโปรโตคอลและโปรแกรมบางอย่างที่ไม่ชอบ

3
อีกคำถามที่เกี่ยวข้อง: เนื่องจากโปรโตคอลจำนวนมากได้รับการพัฒนาเป็นหลักในระบบ Unix ทำไมพวกเขาไม่ใช้ '\ n'
David Thornley

@DavidThornley เพราะ \ r \ n มีแนวโน้มที่จะทำงานข้ามแพลตฟอร์ม (\ r สำหรับ macs รุ่นเก่า, \ r \ n สำหรับ windows และ \ n สำหรับ * nix)
พื้นฐาน

4

เหตุผลที่อนุสัญญามีไว้ในระบบต่าง ๆ ของพวกเขา (\ n สำหรับระบบประเภท unix, \ r \ n บน Windows และอื่น ๆ ) คือเมื่อคุณเลือกการประชุมคุณไม่สามารถเปลี่ยนแปลงได้โดยไม่ทำลายไฟล์ของคนจำนวนมาก และนั่นก็ขมวดคิ้วโดยทั่วไป

ระบบ Unix ได้รับการพัฒนา (วันแรก ๆ ) โดยใช้ teletype หลายรุ่นและในบางครั้งมีคนตัดสินใจว่าอุปกรณ์ควรจะกลับคืนมาเมื่อมีการป้อนบรรทัด

Windows มาจาก DOS ดังนั้นสำหรับ Windows คำถามคือ: ทำไม DOS จึงใช้ลำดับ cr / lf นี้ ฉันเดาว่ามันมีบางอย่างเกี่ยวกับ CP / M ที่ DOS มีรากฐานบางอย่าง อีกครั้งโมเดลเฉพาะของโทรพิมพ์อาจมีบทบาท


อืมน่าสนใจ
sukhbir

1
เหตุใด Windows จึงไม่สามารถจัดการบรรทัดที่ลงท้ายด้วย\nแต่ใช้ต่อไปได้\r\nในตอนนี้ ถ้าพวกเขาไม่ว่าการเริ่มต้นกับ Windows XP ตอนนี้พวกเขาสามารถเริ่มต้นการบันทึกไฟล์ด้วยแทน\n \r\n
DisgruntledGoat

1
Windows ไม่มีส่วนเกี่ยวข้องกับเรื่องนี้ มันเป็นการตัดสินใจของแอพและแอพส่วนใหญ่จะอ่านทั้ง '\ n' และ '\ r \ n' และเขียน '\ r \ n' - เพื่อให้ทุกคนมีความสุข
Rei Miyasaka

2

นี่คือคำตอบจากแหล่งที่ดีที่สุด - Microsoft ทำไมเทอร์มินอลไลน์ 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

ที่บรรทัดก่อนหน้าซ้าย ดังนั้นแม้ยูนิกซ์เมื่ออยู่ในโหมด raw ต้องใช้ CR + LF เพื่อยกเลิกการแสดงผล CR โดยนัยก่อนที่ LF จะเป็นสิ่งประดิษฐ์ unix อาจเป็นระบบเศรษฐกิจเนื่องจากจะบันทึกหนึ่งไบต์ต่อบรรทัด

บรรพบุรุษของยูนิกซ์ของภาษา C ดำเนินการประชุมนี้ในมาตรฐานภาษา C ซึ่งต้องการเพียง "\ n" (ซึ่งเข้ารหัส LF) เพื่อยกเลิกสายการวางภาระบนไลบรารีรันไทม์เพื่อแปลงข้อมูลไฟล์ดิบเป็นสายตรรกะ

ภาษา C ยังแนะนำคำว่า "ขึ้นบรรทัดใหม่" เพื่อแสดงแนวคิดของ "ตัวคั่นบรรทัดทั่วไป" ฉันบอกว่าคณะกรรมการ ASCII เปลี่ยนชื่อของตัวละคร 0x0A เป็น "ขึ้นบรรทัดใหม่" ประมาณปี 1996 ดังนั้นระดับความสับสนได้เพิ่มสูงขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.