ฉันจำไม่ได้ ดังนั้นวิธีที่ถูกต้องในการยุติสาย ASCII แบบเก่าคืออะไร?
ฉันจำไม่ได้ ดังนั้นวิธีที่ถูกต้องในการยุติสาย ASCII แบบเก่าคืออะไร?
คำตอบ:
ฉันจะใช้คำว่า ' r etur n ' เพื่อจำไว้ว่า r มาก่อนหน้า n
\n\r
และ\r\n
จะเหมือนกันไม่ได้ที่พวกเขาทำผลเช่นเดียวกัน? คุณบอกความแตกต่างได้ไหม
หากคุณกำลังใช้ C # คุณควรใช้Environment.NewLine
ซึ่งตาม MSDN มันคือ:
สตริงที่มี "\ r \ n" สำหรับแพลตฟอร์มที่ไม่ใช่ Unix หรือสตริงที่มี "\ n" สำหรับแพลตฟอร์ม Unix
Environment.NewLine
ก็ถือว่าใช้ได้ อย่างไรก็ตามหากคุณกำลังเขียนสิ่งต่าง ๆ ในรูปแบบที่กำหนดไว้อย่างดีรูปแบบอาจกำหนดบรรทัดใหม่ด้วย ตัวอย่างเช่นโปรโตคอล HTTP ระบุว่าคุณต้องใช้\r\n
เป็นตัวยุติบรรทัดสำหรับส่วนหัว ฯลฯ โดยไม่คำนึงถึงแพลตฟอร์ม
บรรทัดใหม่ขึ้นอยู่กับระบบปฏิบัติการของคุณ:
DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13
รายละเอียดเพิ่มเติมได้ที่นี่: https://ccrma.stanford.edu/~craig/utility/flip/
เมื่อมีข้อสงสัยให้ใช้ตัวดู hex / editor ฟรีแวร์เพื่อดูว่าไฟล์เข้ารหัสบรรทัดใหม่อย่างไร
สำหรับผมผมใช้ตามคู่มือที่จะช่วยฉันจำ: 0D0A = \ r \ n = CR, LF = ca RR iage rกลับสู่หลี่nอีฟีด
0D0A
ด้วยหัวใจ แต่ยังคงสับสนและ\r
\n
ลำดับคือ CR (Carriage Return) - LF (Line Feed) จำเครื่องพิมพ์ดอทเมทริกซ์ได้หรือไม่ เผง ดังนั้น - ลำดับที่ถูกต้องคือ \ r \ n
ใน. NET .NET ใด ๆEnvironment.NewLine
ก็น่าจะดีกว่า
ระมัดระวังในการทำสิ่งนี้ด้วยตนเอง
ในความเป็นจริงฉันจะแนะนำไม่ทำเลย
ในความเป็นจริงเรากำลังพูดถึงลำดับการยกเลิกสาย LTS ที่เฉพาะกับแพลตฟอร์ม
หากคุณเปิดไฟล์ในโหมดข้อความ (เช่นไม่ใช่ไบนารี) สตรีมจะแปลง "\ n" เป็น LTS ที่ถูกต้องสำหรับแพลตฟอร์มของคุณ จากนั้นแปลง LTS กลับเป็น "\ n" เมื่อคุณอ่านไฟล์
ดังนั้นหากคุณพิมพ์ "\ r \ n" ลงในไฟล์ windows คุณจะได้รับลำดับ "\ r \ r \ n" ในไฟล์จริง (ดูด้วยโปรแกรมแก้ไขฐานสิบหก)
แน่นอนว่านี่เป็นความเจ็บปวดอย่างแท้จริงเมื่อพูดถึงการถ่ายโอนไฟล์ระหว่างแพลตฟอร์ม
ตอนนี้ถ้าคุณกำลังเขียนไปยังกระแสเครือข่ายฉันจะทำด้วยตนเอง (เป็นโปรโตคอลเครือข่ายส่วนใหญ่เรียกสิ่งนี้โดยเฉพาะ) แต่ฉันจะทำให้แน่ใจว่ากระแสไม่ได้ทำการตีความใด ๆ (ดังนั้นโหมดไบนารีจึงเหมาะสม)
\r\n
สำหรับ Windows จะทำได้ดี
\n
ก็ใช้ได้กับ windows เช่นกันรวมถึง Notepad เวอร์ชันล่าสุด
จากWikipedia (คุณสามารถอ่านสิ่งที่ถูกต้องสำหรับระบบปฏิบัติการของคุณในบทความนั้น):
ระบบที่อิงตาม ASCII หรือชุดอักขระที่เข้ากันได้ใช้ LF (Line feed, '\ n', 0x0A, 10 ในรูปทศนิยม) หรือ CR (Carriage return, '\ r', 0x0D, 13 ในรูปทศนิยม) ทีละตัวหรือ CR ตามด้วย LF (CR + LF, '\ r \ n', 0x0D0A)
\r\n
แปลกที่จะบอกว่าฉันจำได้เพราะมันเป็นสิ่งที่ตรงกันข้ามกับเครื่องพิมพ์ดีดที่ฉันใช้
ถ้าเป็นเรื่องปกติฉันไม่จำเป็นต้องจำมัน ...:-)
ในเครื่องพิมพ์ดีดเมื่อคุณเสร็จสิ้นการดิจิตัลบรรทัดที่คุณใช้คันโยกคืนแคร่นั้นก่อนที่จะทำการม้วนดรัม, ขึ้นบรรทัดใหม่ , และหลังจากให้คุณสามารถควบคุมการคืนรถด้วยตนเองได้
คุณสามารถฟังจากบันทึกนี้จาก freesound.orgเสียงของการป้อนกระดาษในตอนเริ่มต้นและประมาณ -1: 03 วินาทีจากท้ายหลังจากเสียงเตือนเมื่อจบเสียงสายของกลองที่ม้วนและหลัง หนึ่งในค่าขนส่งคืนสินค้า
หากคุณใช้ C # ทำไมไม่ใช้Environment.NewLine
? (ฉันถือว่าคุณใช้ออบเจ็กต์ตัวเขียนไฟล์บางอย่าง ... เพียงแค่ผ่านมันEnvironment.NewLine
และมันจะจัดการกับเทอร์มิเนเตอร์ที่ถูกต้อง