Unicode ไม่ได้ดีทุกตัว – เมื่อ RFC 9839 ช่วยคัดกรองตัวอักษรที่ควรหลีกเลี่ยง

ทุกวันนี้ Unicode กลายเป็นมาตรฐานกลางสำหรับการจัดการข้อความในระบบคอมพิวเตอร์ แต่ Tim Bray ชี้ให้เห็นว่า “ไม่ใช่ทุกตัวอักษรใน Unicode ที่ควรใช้” โดยเฉพาะในโปรโตคอลที่ต้องการความปลอดภัย ความเสถียร และความสามารถในการทำงานร่วมกัน

เขาและ Paul Hoffman จึงเสนอเอกสาร RFC 9839 ต่อ IETF ซึ่งใช้เวลาถึงสองปีในการพัฒนา ก่อนจะได้รับการรับรองในปี 2025 โดย RFC นี้ระบุชัดเจนว่ามี “กลุ่มตัวอักษรที่มีปัญหา” เช่น:
- U+0000 (null character) ที่รบกวนการทำงานของหลายภาษา
- U+0089 (C1 control code) ที่มีพฤติกรรมไม่ชัดเจน
- U+DEAD (unpaired surrogate) ที่ไม่ควรปรากฏใน UTF-8
- U+7FFFF (noncharacter) ที่ไม่มีความหมายและไม่ควรส่งผ่านเครือข่าย

RFC 9839 เสนอ 3 ชุดตัวอักษรย่อยที่ “ปลอดภัยกว่า” สำหรับใช้ในโปรโตคอล ได้แก่ Scalars, XML และ Assignables โดยแต่ละชุดมีระดับการกรองตัวอักษรที่ต่างกัน

แม้จะมี RFC 8264 (PRECIS Framework) ที่ครอบคลุมมากกว่า แต่ Tim เห็นว่ามันซับซ้อนเกินไป และผูกกับเวอร์ชัน Unicode เฉพาะ ทำให้ใช้งานยากในระบบทั่วไป

เขายังเขียนไลบรารีภาษา Go สำหรับตรวจสอบข้อความตาม RFC 9839 เพื่อให้นักพัฒนานำไปใช้ได้ทันที

สรุปเนื้อหาเป็นหัวข้อ
RFC 9839 เป็นเอกสารจาก IETF ที่ระบุ Unicode characters ที่ควรหลีกเลี่ยง
เสนอ 3 ชุดตัวอักษรย่อย: Scalars, XML, Assignables สำหรับใช้ในโปรโตคอล
ตัวอย่างตัวอักษรที่มีปัญหา ได้แก่ U+0000, U+0089, U+DEAD, U+7FFFF
U+DEAD เป็น unpaired surrogate ที่ไม่ควรปรากฏใน UTF-8
U+7FFFF เป็น noncharacter ที่ไม่มีความหมายและไม่ควรส่งผ่านเครือข่าย
JSON อนุญาตให้ใช้ตัวอักษรเหล่านี้ แต่ RFC 9839 แนะนำให้กรองออก
Tim Bray เขียนไลบรารีภาษา Go สำหรับตรวจสอบข้อความตาม RFC 9839
RFC 9839 เป็น submission แบบบุคคล ไม่ผ่าน Working Group
PRECIS (RFC 8264) เป็นกรอบการทำงานที่ซับซ้อนกว่า แต่ไม่ค่อยมีคนใช้
PRECIS ผูกกับเวอร์ชัน Unicode ทำให้การใช้งานในระบบทั่วไปยุ่งยาก

ข้อมูลเสริมจากภายนอก
Unicode มีตัวอักษรหลายประเภท เช่น control codes, surrogates, noncharacters
UTF-8 ไม่อนุญาตให้เข้ารหัส surrogate pairs
JSON ไม่กรองตัวอักษรที่มีปัญหาโดยค่าเริ่มต้น
XML และ YAML มีการกรองบางส่วน แต่ไม่ครบทุกประเภท
การใช้ตัวอักษรที่ไม่เหมาะสมอาจทำให้เกิดปัญหาในการ parse หรือแสดงผล
การกรอง Unicode ที่ไม่เหมาะสมช่วยเพิ่มความปลอดภัยและความเสถียรของระบบ

https://www.tbray.org/ongoing/When/202x/2025/08/14/RFC9839
🎙️ Unicode ไม่ได้ดีทุกตัว – เมื่อ RFC 9839 ช่วยคัดกรองตัวอักษรที่ควรหลีกเลี่ยง ทุกวันนี้ Unicode กลายเป็นมาตรฐานกลางสำหรับการจัดการข้อความในระบบคอมพิวเตอร์ แต่ Tim Bray ชี้ให้เห็นว่า “ไม่ใช่ทุกตัวอักษรใน Unicode ที่ควรใช้” โดยเฉพาะในโปรโตคอลที่ต้องการความปลอดภัย ความเสถียร และความสามารถในการทำงานร่วมกัน เขาและ Paul Hoffman จึงเสนอเอกสาร RFC 9839 ต่อ IETF ซึ่งใช้เวลาถึงสองปีในการพัฒนา ก่อนจะได้รับการรับรองในปี 2025 โดย RFC นี้ระบุชัดเจนว่ามี “กลุ่มตัวอักษรที่มีปัญหา” เช่น: - U+0000 (null character) ที่รบกวนการทำงานของหลายภาษา - U+0089 (C1 control code) ที่มีพฤติกรรมไม่ชัดเจน - U+DEAD (unpaired surrogate) ที่ไม่ควรปรากฏใน UTF-8 - U+7FFFF (noncharacter) ที่ไม่มีความหมายและไม่ควรส่งผ่านเครือข่าย RFC 9839 เสนอ 3 ชุดตัวอักษรย่อยที่ “ปลอดภัยกว่า” สำหรับใช้ในโปรโตคอล ได้แก่ Scalars, XML และ Assignables โดยแต่ละชุดมีระดับการกรองตัวอักษรที่ต่างกัน แม้จะมี RFC 8264 (PRECIS Framework) ที่ครอบคลุมมากกว่า แต่ Tim เห็นว่ามันซับซ้อนเกินไป และผูกกับเวอร์ชัน Unicode เฉพาะ ทำให้ใช้งานยากในระบบทั่วไป เขายังเขียนไลบรารีภาษา Go สำหรับตรวจสอบข้อความตาม RFC 9839 เพื่อให้นักพัฒนานำไปใช้ได้ทันที 📌 สรุปเนื้อหาเป็นหัวข้อ ➡️ RFC 9839 เป็นเอกสารจาก IETF ที่ระบุ Unicode characters ที่ควรหลีกเลี่ยง ➡️ เสนอ 3 ชุดตัวอักษรย่อย: Scalars, XML, Assignables สำหรับใช้ในโปรโตคอล ➡️ ตัวอย่างตัวอักษรที่มีปัญหา ได้แก่ U+0000, U+0089, U+DEAD, U+7FFFF ➡️ U+DEAD เป็น unpaired surrogate ที่ไม่ควรปรากฏใน UTF-8 ➡️ U+7FFFF เป็น noncharacter ที่ไม่มีความหมายและไม่ควรส่งผ่านเครือข่าย ➡️ JSON อนุญาตให้ใช้ตัวอักษรเหล่านี้ แต่ RFC 9839 แนะนำให้กรองออก ➡️ Tim Bray เขียนไลบรารีภาษา Go สำหรับตรวจสอบข้อความตาม RFC 9839 ➡️ RFC 9839 เป็น submission แบบบุคคล ไม่ผ่าน Working Group ➡️ PRECIS (RFC 8264) เป็นกรอบการทำงานที่ซับซ้อนกว่า แต่ไม่ค่อยมีคนใช้ ➡️ PRECIS ผูกกับเวอร์ชัน Unicode ทำให้การใช้งานในระบบทั่วไปยุ่งยาก ✅ ข้อมูลเสริมจากภายนอก ➡️ Unicode มีตัวอักษรหลายประเภท เช่น control codes, surrogates, noncharacters ➡️ UTF-8 ไม่อนุญาตให้เข้ารหัส surrogate pairs ➡️ JSON ไม่กรองตัวอักษรที่มีปัญหาโดยค่าเริ่มต้น ➡️ XML และ YAML มีการกรองบางส่วน แต่ไม่ครบทุกประเภท ➡️ การใช้ตัวอักษรที่ไม่เหมาะสมอาจทำให้เกิดปัญหาในการ parse หรือแสดงผล ➡️ การกรอง Unicode ที่ไม่เหมาะสมช่วยเพิ่มความปลอดภัยและความเสถียรของระบบ https://www.tbray.org/ongoing/When/202x/2025/08/14/RFC9839
0 Comments 0 Shares 12 Views 0 Reviews