วิธีการแปลงแฟ้ม Text File ระหว่างระบบปฏิบัติการ Linux , Mac และ Windows

แปลจากบทความ
How to Transfer Text Files Between Linux, Macintosh, and Microsoft Windows Operating Systems

แฟ้ม Text File มักจะไม่สามารถโยกย้ายข้ามระบบปฏิบัติการได้ง่ายนัก เพราะอะไร ? เพราะความแตกต่างระหว่างระบบปฏิบัติการที่ใช้เครื่องหมายสิ้นสุดบรรทัดที่ต่างกัน นีคือเหตุที่ทำให้ให้คุณต้องสับสนเมื่อต้องย้ายแฟ้มจากอีกระบบหนึ่งไปอีกระบบหนึ่ง

ระบบปฎิบัติการ Macintosh แบบดั้งเดิม(ต่อจะเรียกว่า Classic Macintosh) นั้นจะใช้อักขระ Carriage Return เป็นตัวบอกการสิ้นสุดของบรรทัด อักขระตัวนี้ง่ายต่อการเข้าใจสำหรับผู้อายุมากที่คุ้นเคยกับการใช้พิมพ์ดีดในสมัยก่อนนั้น แต่สำหรับผู้ที่อายุน้อยๆ รุ่นถัดมานั้น เครื่องพิมพ์ดีดไฟฟ้าที่ใช้อยู่จะมีแป้นขนาดใหญ่เรียกว่า Carriage Return ซึ่งจะเพิ่มการเลื่อนบรรทัดใหม่โดยอัตโนมัติเข้ามาด้วย

เมื่อเวลาเปลี่ยนไป ระบบปฏิบัติการvMacintosh รุ่นใหม่กว่าที่เรียกว่า Mac OS X ก็เปลี่ยนมาเป็นการใช้อักขระ Line Feed แทนการใช้ Carriage Return

อะไรคือสิ่งที่แตกต่าง อักขระ Carriage Return มักจะถูกอ้างถึงโดยใช้ตัวอักษร CR ขณะที่ Line Feed นั้นถูกอ้างถึงด้วยตัวอักษร LF

ใน Classic Mac อักขระ CR จะบอกการสิ้นสุดบรรทัด ในขณะที่ Mac รุ่นใหม่ LF ทำหน้าที่นั้นแทน

ในระบบปฏิบัติการ Linux (พัฒนามากจาก Unix) ใช้อักขระ Line Feed ระบุการสิ้นสุดบรรทัดเช่นเดียวกับ ระบบปฏิบัติ Mac OS X

หรือกล่าวได้ว่า Linux และ Mac OS X ใช้อักขระระบุการสิ้นสุดบรรทัดตัวเดียวกัน นั่นคือ LF และเพื่อไม่ให้สับสนให้คิดว่าในบทความนี้คำว่าระบบปฎิบัติการ Mac OS X และ Linux สามารถใช้แทนกันได้

ส่วนระบบปฏิบัติการ Classic Mac อยู่ในกลุ่มที่เป็นเอกเทศ มันเป็นระบบปฎิบัติการเดียวที่ใช้อักระ CR เป็นตัวระบุการสิ้นสุดบรรทัด

ความแตกต่างระหว่าง LF และ CR ไม่ใช่แค่หมายถึงวิธีการขึ้นบรรทัดใหม่ แต่อักขระทั้งสองตัวมีหมายเลขที่ต่างกันในตาราง ASCII โดย CR แทนด้วยหมายเลข 13 และ LF แทนด้วยหมายเลข 10

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

แง่มุมของประวัติศาสตร์
อักขระ Line Feed ถูกแยกออกมาจาก Carriage Return ด้วยเหตุผลทางประวัติศาสตร์ ในสมัยก่อนนั้น สำนักข่าวจะส่งข่าวผ่านทางเครื่อง Teletype ปัจจุบันพบเห็นได้จำกัดเนื่องจากมีอุปกรณ์นี้ไม่ใช่เครื่องคอมพิวเตอร์แต่เป็นเครื่องกลผสมกับไฟฟ้า

Teletype มีขนาดใหญ่ และการทำงานงานของมันก็ส่งเสียง แท็บๆ เบื้องหลัง เหมือนที่ คุณเคยได้ยินในรายการข่าวทางวิทยุและโทรทัศน์ในสมัยก่อน มันเป็นเสียงที่ทำให้ผู้ประกาศข่าวรู้ว่าข่าวด่วนและสำคัญได้ส่งมาถึงเขาแล้ว ในสมัยนี้ผู้ประกาศจะใช้เสียงเพลงเปิดรายการเป็นการบอกว่ามีข่าวที่สำคัญมาถึงแล้วแทน

ในหลายกรณี เครื่อง Teletype พวกนี้ไม่มีสมอง ไม่มีหน่วยประมวลผลกลาง มันไม่ฉลาด จึงจำเป็นที่จะต้องบอกสิ่งเล็กๆ น้อยๆ ทุกสิ่งให้มันทราบ รวมทั้งการ "กลับไปที่ต้นบรรทัด"(CR) และ "ขึ้นบรรทัดใหม่" (LF)

อะไรคือ Carriage Return ? มันทำให้หัวพิมพ์ของเครื่อง Teletype เลื่อนไปทางด้านซ้ายสุดของกระดาษ อะไรคือ Linefeed ? มันทำให้แคร่พิมพ์ของเครื่อง Teletype เลื่อนกระดาษไปอีกหนึ่งบรรทัด นี่คือสองสิ่งที่ทำหน้าที่ต่างกัน

ในขณะที่ในเครื่องพิมพ์ดีดนั้นงานทั้งสองอย่างถูกรวมเข้าด้วยกันด้วยปุ่ม Cariage Return และนี่คือสาเหตุว่าทำไมปุ่ม Enter ในเครื่องคอมพิวเตอร์นั้นเป็นการแทนอักขณะทั้งสองตัว -- ด้วยเหตุผลทางประวัติศาสตร์นั่นเอง

การแปลงแฟ้ม Text File จากระบบปฎบัติการหนึ่งไปอีกระบบปฏิบัติการหนึ่ง
การแปลงแฟ้มจากระบบปฏิบัติการ Windows ไปสู่ระบบปฎิบัติการ Linux หรือ Classic Mac นั้น คุณต้องเอาอักขณะ LF ออกจาก CRLF ส่วนการแปลงไปสู่ระบบปฏิบัติการ Linux (หรือ Mac OS X )นั้น คุณต้องเอาอักขระอีกตัวคือ CR ออกจาก CRLF แทน

และการแปลงย้อนกลับก็ต้องอาศัยการเพิ่มบางอักขระเข้ามา หากต้องการแปลงแฟ้มจาก Classic Mac เพื่อไปใช้ใน Windows คุณต้องเพิ่ม LF ตามหลังทุกๆ CR ส่วนการแปลงแฟ้มจาก Linux เพื่อไปใช้ใน Windows คุณต้องเพิ่ม CR เข้าก่อนหน้าของทุกๆ อักขระ LF

การเปลี่ยนแฟ้มที่ใช้สำหรับระบบปฎิบัติการ classic Mac เพื่อไปใช้ใน Linux จะใช้การเปลี่ยนอักขระแทนที่จะเป็นการเพิ่มหรือลด โดยเราจะเปลี่ยนจากอักขระ CR ทุกๆ ตัวให้เป็น LF

ผมต้องขอย้ำอีกครั้งว่าในบทความนี้ คำว่า Mac OS X และ Linux สามารถใช้แทนกันได้ เพื่อคุณเห็นตัวใดตัวหนึ่งก็แสดงว่าอีกตัวสามารถทำแบบเดียวกันได้

และในทางกลับกันหากจะเปลี่ยนแฟ้มในระบบ classic Mac มาเป็น Linux คุณก็ต้องแทนอักขระ LF ด้วย CR

มันไม่ยากอย่างที่คิด
ข้อแนะนำคนทั่วไปคือ การเปลี่ยนแปลงแฟ้ม Text File ระหว่างระบบปฎิบัติการไม่ยากอย่างที่คิด คนส่วนมากใช้การถ่ายโอนผ่าน FTP ซึ่งโปรแกรมนี้จะแปลงรูปแบบแฟ้มให้คุณโดยอัติโนมัติ

FTP มีโหมดกาำรทำงานพื้นฐานสองโหมด คือ โหมด Binary และโหมด ASCII (อ่านว่า แอสกี) ซึ่งในโหมดหลังนี้จะมีการเปลี่ยนอักระสิ้นสุดบรรทัดให้คุณโดยอัติโนมัติ ในขณะที่โหมดแรกนั้นจะไม่มีการเปลี่ยนแปลงใดๆ กับแฟ้มของคุณ

ต้องย้ำอีกครั้งว่า เมื่อคุณอ่านโอนแฟ้ม Text File คุณต้องกำหนดให้มีการถ่ายโอนในโหมด ASCII เมื่อคุณถ่ายโอนแฟ้มแบบอื่นๆ เช่น รูป, ภาพ, เสียง ฯลฯ คุณต้องกำหนดให้มีการถ่ายโอนในโหมด Binary หากคุณไม่ทำเช่นนี้แฟ้มที่ถูกถ่ายโอนจะไม่สามารถอ่านได้อย่างถูกต้องเมื่อนำมาใช้งาน

สรุป
มีอักขระสองตัวที่คุณต้องจำเมื่อต้องแปลงแฟ้มจากระบบปฏิบัติการหนึ่งไปอีกระบบปฏิบัติการหนึ่งนั่นคือ CL และ LF แต่ส่วนที่อยากคือต้องจะว่าระบบปฏิบัติการไหน ใช้อักขระตัวไหนในการกำหนดการสิ้นสุดบรรทัด

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

C001-2.1 ดีไวซ์ไดรเวอร์ และโปรแกรมดีไวซ์เมเนเจอร์

Jonathan Livingston : Seagull

การทำตัวอักษรเส้นประ