22 คะแนน โดย GN⁺ 2023-10-03 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อ 20 ปีก่อน Joel เคยย้ำว่า "Plain Text ไม่มีอยู่จริง" และเน้นว่าจำเป็นต้องเข้าใจเรื่องการเข้ารหัส
  • Unicode คือมาตรฐานที่รวมภาษามนุษย์ทั้งหมดให้สามารถใช้งานบนคอมพิวเตอร์ได้
  • เป็นระบบ code point ที่กำหนดหมายเลขเฉพาะให้กับอักขระแต่ละตัว
  • code point ที่ใหญ่ที่สุดคือ 0x10FFFF ทำให้มีพื้นที่ code point ราว 1.1 ล้านค่า
  • UTF-8 คือการเข้ารหัสที่ใช้กันมากที่สุด โดยมีโอกาส 98% ที่จะพบการใช้งาน
  • UTF-8 เป็นการเข้ารหัสแบบความยาวแปรผัน โดย code point สามารถเข้ารหัสเป็นลำดับ 1~4 ไบต์ได้
  • UTF-8 เข้ากันได้กับ ASCII ในระดับไบต์ และประหยัดพื้นที่สำหรับอักษรละตินพื้นฐาน
  • UTF-8 มีความสามารถในการตรวจจับและกู้คืนข้อผิดพลาดในตัว จึงสามารถระบุลำดับไบต์ UTF-8 ที่สมบูรณ์และถูกต้องได้
  • extended grapheme cluster หรือ grapheme คือหน่วยที่ควรใช้ในการวนซ้ำ ไม่ใช่ code point
  • Unicode มีการอัปเดตทุกปี และกฎที่ใช้กำหนด grapheme cluster ก็เปลี่ยนทุกปีเช่นกัน
  • Unicode อาจถูกเรนเดอร์ต่างกันไปตาม locale
  • surrogate pair ของ Unicode คือหน่วย UTF-16 สองตัวที่ใช้เข้ารหัส code point ของ Unicode หนึ่งค่า
  • UTF-16 ยังถูกใช้เป็นรูปแบบแทนค่าในหน่วยความจำในบางระบบ
  • สตริง Unicode ควรถูกทำ normalization ก่อนนำไปเปรียบเทียบ
  • บทความนี้เน้นย้ำว่าการใช้ไลบรารี Unicode มีความสำคัญ แม้กระทั่งกับการทำงานพื้นฐานอย่าง strlen, indexOf, substring

3 ความคิดเห็น

 
kimws 2023-10-04

ในกรณีของ "‍♂️".length นั้น Python 3.11 จะคืนค่าเป็น 1 ครับ

 
kimws 2023-10-04

อีโมจิในคอมเมนต์แสดงผลเพี้ยนครับ

 
GN⁺ 2023-10-03
ความคิดเห็นจาก Hacker News
  • บทความนี้อภิปรายถึงความซับซ้อนของ Unicode และวิธีนำไปใช้ในการพัฒนาซอฟต์แวร์
  • ผู้แสดงความคิดเห็นคนหนึ่งไม่เห็นด้วยกับข้ออ้างของบทความที่ว่า "extended grapheme cluster" เป็นวิธีที่ดีที่สุดในการมองตัวอักษรใน Unicode และโต้แย้งว่านิยามของ "ตัวอักษร" อาจเปลี่ยนไปตามการใช้งานที่ตั้งใจไว้
  • ผู้แสดงความคิดเห็นเสนอว่าการทำซ้ำสตริงควรอิงกับ code point ซึ่งเป็นระดับพื้นฐานที่ Unicode ทำงานอยู่
  • ผู้แสดงความคิดเห็นอีกคนชื่นชมบทความและตอบคำถามของผู้เขียนว่าทำไมลิแกเชอร์ "fi" จึงมี code point ของตัวเอง โดยอธิบายว่านี่เป็นเพราะหลักการความเข้ากันได้เพื่อคงรูปแบบต้นฉบับของ Unicode
  • ผู้แสดงความคิดเห็นคนหนึ่งบ่นว่าระหว่างอ่านหน้าเว็บนั้นเห็นตัวชี้เมาส์หลายอันบนหน้าจอ
  • ผู้แสดงความคิดเห็นอีกคนพูดถึงความท้าทายในการตั้งค่า locale ของคอมพิวเตอร์เมื่อผู้ใช้สามารถอ่านและเขียนได้หลายภาษา และวิจารณ์ว่าลินุกซ์มีตัวเลือกการปรับแต่งน้อยกว่า Windows
  • ผู้แสดงความคิดเห็นคนหนึ่งเล่าประสบการณ์ที่เคยมีปัญหาในการทำความสะอาดข้อมูลนำเข้าของผู้ใช้สำหรับระบบของบุคคลที่สาม เนื่องจากวิธีจัดการอักขระเน้นเสียง
  • ผู้แสดงความคิดเห็นอีกคนโต้แย้งข้ออ้างของบทความที่ว่า code point ไม่ใช่หน่วยที่ดีที่สุดในการใช้งาน โดยชี้ว่ามีหลายสถานการณ์ที่การทำงานกับ code point เหมาะสม
  • ผู้แสดงความคิดเห็นคนหนึ่งวิจารณ์ตัวอย่างในบทความเกี่ยวกับวิธีเข้ารหัส "é" ใน Unicode โดยบอกว่าทำให้เข้าใจผิดและไม่ใช่ตัวแทนของวิธีที่ตัวอักษรถูกเข้ารหัสโดยทั่วไป
  • ผู้แสดงความคิดเห็นอีกคนอภิปรายถึงปัญหาที่โลโกแกรมภาษาจีน ญี่ปุ่น และเกาหลี ถูกกำหนดให้ใช้ code point เดียวกัน ซึ่งทำให้การแสดงผลชื่อไฟล์ภาษาจีนบน Windows ออกมาไม่ดีเมื่อ locale ของระบบไม่ใช่ภาษาจีน
  • ผู้แสดงความคิดเห็นคนหนึ่งรู้สึกสับสนและรำคาญกับเอฟเฟกต์เคอร์เซอร์เมาส์บนหน้าเว็บ