Thursday, March 17, 2005

\n ไม่เท่ากับการขึ้นบรรทัดใหม่บน Windows

ปกติจะเขียนโปรแกรมบน UNIX ถ้าเขียนบน Windows ก็จะใช้ gcc บน Cygwin ซึ่งเวลาให้พิมพ์ข้อความออกมา จะใช้ \n ในการขึ้นบรรทัดใหม่ แต่บน Windows การขึ้นบรรทัดใหม่นั้น คือการที่บรรทัดนั้นจบด้วย 2 ตัวอักษร ตัวแรกคือตัวที่บอกการสิ้นสุดบรรทัด carriage return character* ซึ่งก็คือ \r หรือว่า \015 แล้วก็ตามด้วยตัวอักษรอีกตัวเพื่อขึ้นบรรทัดใหม่ซึ่งมีชื่อว่า line feed character ซึ่งก็คือ \n นั่นเอง ดังนั้นในการเขียนโปรแกรมบน Windows เพื่อการขึ้นบรรทัดใหม่ ต้องใช้ \r\n แทน \n

สำหรับ C# สามารถใช้ System.Environment.NewLine; แทน \r\n เพื่อให้คนอื่นอ่านเข้าใจได้ง่ายขึ้น(หรือว่ายากขึ้นก็ไม่รู้)ว่าเป็นการขึ้นบรรทัดใหม่

*เจ้าตัว \r นี่แหละ ที่ทำให้เกิด ^M ในไฟล์ที่สร้างจาก Windows (DOS) ดู บันทึกPerl

No comments: