- RFC 9839 định nghĩa rõ ràng các ký tự Unicode có vấn đề có thể xuất hiện trong các trường văn bản khi phát triển phần mềm
- RFC này đề cập đến những vấn đề phát sinh do thiếu tính nhất quán trong cách xử lý các ký tự đó giữa những ngôn ngữ và thư viện khác nhau
- RFC 9839 đề xuất ba tập con ít gây vấn đề hơn để có thể lựa chọn sử dụng tùy trường hợp
- So với khung PRECIS hiện có, RFC này đơn giản hơn và dễ áp dụng hơn
- Một thư viện Go cho RFC 9839 cũng đã được công bố để hỗ trợ triển khai thực tế
Bối cảnh và tổng quan về RFC 9839
- Unicode được dùng làm tiêu chuẩn trong gần như mọi xử lý dữ liệu văn bản
- Tuy nhiên, khi thiết kế cấu trúc dữ liệu hoặc giao thức thực tế, việc cho phép mọi ký tự Unicode đều có thể gây ra vấn đề
- Paul Hoffman và tác giả đã gửi bản nháp cá nhân lên IETF nhằm đưa ra tiêu chí rõ ràng cho các vấn đề Unicode lặp đi lặp lại này
- Sau 2 năm thảo luận, tài liệu được chấp nhận làm tiêu chuẩn chính thức và công bố thành RFC 9839
- Tài liệu này giải thích chi tiết về các loại ký tự có vấn đề, lý do chúng gây rắc rối (về mặt kỹ thuật và tiêu chuẩn), cùng ba tập con để người dùng có thể lựa chọn sử dụng
Nội dung chính của RFC 9839
- Đây là tài liệu cần được tham khảo khi thiết kế các trường văn bản trong môi trường phần mềm và mạng
- RFC 9839 dài 10 trang, thuộc nhóm khá ngắn trong các tài liệu tiêu chuẩn của IETF
- Nội dung được trình bày dễ hiểu, chủ yếu dành cho các nhà phát triển phần mềm và kỹ sư mạng
Ví dụ về các ký tự Unicode có vấn đề
Thiết kế và giới hạn của JSON
- Đây không phải lỗi của người tạo ra JSON là Doug Crockford
- JSON được thiết kế trong giai đoạn Unicode chưa đủ trưởng thành, nên không thể siết chặt tập ký tự một cách nghiêm ngặt
- Vì giờ không thể thay đổi tiêu chuẩn, nên cần một cách loại trừ các ký tự có vấn đề dựa trên kinh nghiệm thực tế
Khác biệt với khung PRECIS của IETF
- Trước RFC 9839 của năm 2025, IETF đã có nhiều tiêu chuẩn như RFC 8264 (PRECIS Framework)
- Khung này mô tả chi tiết cách tinh lọc, áp dụng và so sánh các chuỗi đã quốc tế hóa
- Tài liệu dài 43 trang, với phần nền tảng và giải pháp rất toàn diện
- PRECIS phụ thuộc mạnh vào phiên bản Unicode, đồng thời khá phức tạp và khó áp dụng
- RFC 9839 ngắn gọn hơn, tập trung vào tính thực tiễn, và dễ được chấp nhận nhanh khi định nghĩa giao thức mới
Các tập con của RFC 9839 và ví dụ ứng dụng
- RFC 9839 đưa ra ba tập con thực tế (scalars, XML, assignables)
- Mỗi tập con khác nhau đôi chút ở phạm vi các ký tự có vấn đề bị loại trừ
- Dưới đây là tóm tắt bảng về cách các định dạng dữ liệu chính và các tập con của RFC 9839 xử lý ký tự có vấn đề
- Một số định dạng như CBOR, TOML, XML, YAML loại trừ một phần surrogate hoặc ký tự điều khiển
- I-JSON loại trừ surrogate và noncharacter
- JSON thông thường, Protobufs không loại trừ
- XML, YAML do đặc tính charset nên chỉ loại trừ một phần noncharacter/mã điều khiển
- Lưu ý: XML và YAML không loại trừ các noncharacter nằm ngoài Basic Multilingual Pane
Thư viện RFC 9839 cho Go
- Một thư viện Go nhỏ hỗ trợ kiểm tra ký tự theo ba tập con của RFC 9839 đã được công bố
- Thư viện đã được kiểm thử đầy đủ, nhưng việc tối ưu hóa vẫn đang tiếp tục
- Tác giả hoan nghênh việc thử nghiệm và phản hồi từ môi trường làm việc thực tế
Ý nghĩa và quá trình xây dựng RFC 9839
- RFC 9839 được công bố chính thức sau hơn 15 lần chỉnh sửa bản nháp, cùng với nhiều vòng phản hồi từ các đồng tác giả
- Nhờ thảo luận và đóng góp từ nhiều chuyên gia trong cộng đồng, tài liệu đã phát triển thành một văn bản hoàn thiện hơn rất nhiều so với bản đầu
- Các cộng tác viên được nêu tên trong phần “Acknowledgements”
Trải nghiệm gửi RFC theo diện cá nhân
- RFC 9839 được thực hiện dưới hình thức individual submission
- So với cách làm truyền thống thông qua Working Group, hình thức này tốn nhiều công sức và gánh nặng thủ tục hơn
- So với trải nghiệm tham gia Working Group, cách làm truyền thống hiệu quả hơn và đáng được khuyến nghị hơn
Chưa có bình luận nào.