- เมื่อ 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 ความคิดเห็น
ในกรณีของ
"♂️".lengthนั้น Python 3.11 จะคืนค่าเป็น 1 ครับอีโมจิในคอมเมนต์แสดงผลเพี้ยนครับ
ความคิดเห็นจาก Hacker News