Kodokon kodokon.com

อักขระที่มีเครื่องหมายกำกับ UTF-8 และการจบบรรทัด

เข้าใจว่าทำไมตัวอักษรบางครั้งถึงแสดงผลเพี้ยน และการจบบรรทัดที่มองไม่เห็นซ่อนอะไรไว้

7 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

เครื่องไม่รู้เลยว่าตัวอักษร A คืออะไร สิ่งเดียวที่มันจัดการได้คือตัวเลข ดังนั้นเพื่อจะเขียนข้อความ ทุกคนจึงต้องตกลงกันเรื่อง ตารางเทียบค่า: เลข 65 หมายถึง A เลข 66 หมายถึง B และไล่ไปเรื่อย ๆ ข้อตกลงนี้เรียกว่า การเข้ารหัสอักขระ ตัวที่เก่าแก่ที่สุดคือ ASCII ซึ่งมีมาตั้งแต่ทศวรรษ 1960 และครอบคลุมเพียงตัวอักษรภาษาอังกฤษเท่านั้น: ไม่มี é ไม่มี ç ไม่มี ü ไม่มีอักษรจีนสักตัว และแน่นอนว่าไม่มีอักษรไทยด้วย

จากนั้นแต่ละประเทศก็ประดิษฐ์ตารางของตัวเองขึ้นมา แล้วความโกลาหลก็ตามมา: ไฟล์ภาษาฝรั่งเศสที่เปิดด้วยตารางภาษารัสเซียกลายเป็นตัวอักษรมั่ว ๆ อ่านไม่ออก ทางออกยุคใหม่เรียกว่า Unicode แคตตาล็อกเดียวที่กำหนดหมายเลขให้กับอักขระ ทุกตัว ในทุกภาษา รวมถึงอีโมจิด้วย และ UTF-8 คือวิธีมาตรฐานในการเขียนหมายเลขเหล่านั้นลงในไฟล์ ทุกวันนี้กฎง่ายมากและไม่มีข้อยกเว้น: บันทึกไฟล์ของคุณเป็น UTF-8 เสมอ

TEXT
เขียนด้วย 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 มันมาจากเครื่องพิมพ์ดีดโดยตรง ที่ต้องใช้สองจังหวะแยกกัน: ดันแคร่กลับ แล้วหมุนกระดาษลงหนึ่งบรรทัด

TEXT
สิ่งที่คุณเห็นบนหน้าจอ:

Hello
Hi there

สิ่งที่ไฟล์บรรจุไว้จริง ๆ:

macOS / Linux (LF)     Hello\nHi there
Windows (CRLF)         Hello\r\nHi there
สองไฟล์ที่ดูเหมือนกันบนหน้าจอ แต่มีเนื้อหาต่างกันในความเป็นจริง

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. เกิดอะไรขึ้นเมื่อ é แสดงผลออกมาเป็น é?
    • ไฟล์ถูกอ่านด้วยการเข้ารหัสที่ต่างจากตอนที่เขียนมัน
    • ไฟล์เสียหายและต้องสร้างใหม่
    • เครื่องหมายกำกับถูกระบบตัดออกไป
    • ฟอนต์หายไป
  2. ในอดีต Windows ใช้การจบบรรทัดแบบใด?
    • CRLF
    • LF
    • CR ตัวเดียว
  3. คุณควรเลือกการตั้งค่าแบบใดในเอดิเตอร์เขียนโค้ดของคุณ?
    • UTF-8 สำหรับการเข้ารหัสอักขระ และ LF สำหรับการจบบรรทัด
    • ASCII สำหรับการเข้ารหัสอักขระ และ CRLF สำหรับการจบบรรทัด
    • Latin-1 สำหรับการเข้ารหัสอักขระ และ CR สำหรับการจบบรรทัด