เข้าใจว่าทำไมตัวอักษรบางครั้งถึงแสดงผลเพี้ยน และการจบบรรทัดที่มองไม่เห็นซ่อนอะไรไว้
เปิดบทเรียนนี้ใน Kodokonเครื่องไม่รู้เลยว่าตัวอักษร A คืออะไร สิ่งเดียวที่มันจัดการได้คือตัวเลข ดังนั้นเพื่อจะเขียนข้อความ ทุกคนจึงต้องตกลงกันเรื่อง ตารางเทียบค่า: เลข 65 หมายถึง A เลข 66 หมายถึง B และไล่ไปเรื่อย ๆ ข้อตกลงนี้เรียกว่า การเข้ารหัสอักขระ ตัวที่เก่าแก่ที่สุดคือ ASCII ซึ่งมีมาตั้งแต่ทศวรรษ 1960 และครอบคลุมเพียงตัวอักษรภาษาอังกฤษเท่านั้น: ไม่มี é ไม่มี ç ไม่มี ü ไม่มีอักษรจีนสักตัว และแน่นอนว่าไม่มีอักษรไทยด้วย
จากนั้นแต่ละประเทศก็ประดิษฐ์ตารางของตัวเองขึ้นมา แล้วความโกลาหลก็ตามมา: ไฟล์ภาษาฝรั่งเศสที่เปิดด้วยตารางภาษารัสเซียกลายเป็นตัวอักษรมั่ว ๆ อ่านไม่ออก ทางออกยุคใหม่เรียกว่า Unicode แคตตาล็อกเดียวที่กำหนดหมายเลขให้กับอักขระ ทุกตัว ในทุกภาษา รวมถึงอีโมจิด้วย และ UTF-8 คือวิธีมาตรฐานในการเขียนหมายเลขเหล่านั้นลงในไฟล์ ทุกวันนี้กฎง่ายมากและไม่มีข้อยกเว้น: บันทึกไฟล์ของคุณเป็น UTF-8 เสมอ
เขียนด้วย UTF-8 อ่านด้วย UTF-8 -> Creme brulee (อักขระถูกต้อง)
เขียนด้วย UTF-8 อ่านด้วย Latin-1 -> Crème brûlée
เขียนด้วย Latin-1 อ่านด้วย UTF-8 -> Cr?me br?l?eสิ่งที่มองไม่เห็นอย่างที่สอง: การจบบรรทัด เมื่อคุณกด Enter ไม่มีเส้นไหนถูกวาดลงในไฟล์ แต่มีอักขระที่มองไม่เห็นหนึ่งหรือสองตัวถูกเพิ่มเข้าไปแทน และตรงนี้อีกเช่นกัน ระบบต่าง ๆ ไม่เคยตกลงกันได้เลย macOS และ Linux ใช้อักขระตัวเดียวคือ LF (line feed) เขียนแทนด้วย \n ส่วน Windows ใช้สองตัวติดกันคือ CRLF (carriage return แล้วตามด้วย line feed) เขียนแทนด้วย \r\n มันมาจากเครื่องพิมพ์ดีดโดยตรง ที่ต้องใช้สองจังหวะแยกกัน: ดันแคร่กลับ แล้วหมุนกระดาษลงหนึ่งบรรทัด
สิ่งที่คุณเห็นบนหน้าจอ:
Hello
Hi there
สิ่งที่ไฟล์บรรจุไว้จริง ๆ:
macOS / Linux (LF) Hello\nHi there
Windows (CRLF) Hello\r\nHi thereé แสดงผลออกมาเป็น é?