22 điểm bởi GN⁺ 2023-10-03 | 3 bình luận | Chia sẻ qua WhatsApp
  • 20 năm trước, Joel từng nhấn mạnh rằng "Không tồn tại thứ gọi là Plain Text", và việc hiểu về mã hóa là điều bắt buộc
  • Unicode là tiêu chuẩn thống nhất để mọi ngôn ngữ của loài người có thể được sử dụng trên máy tính
  • Hệ thống code point gán một số duy nhất cho mỗi ký tự khác nhau
  • Code point lớn nhất là 0x10FFFF, cung cấp không gian khoảng 1,1 triệu code point
  • UTF-8 là kiểu mã hóa phổ biến nhất, với xác suất được sử dụng lên tới 98%
  • UTF-8 là mã hóa độ dài biến thiên, trong đó code point có thể được mã hóa thành chuỗi 1 đến 4 byte
  • UTF-8 tương thích byte với ASCII và tiết kiệm không gian cho nhóm ký tự Latin cơ bản
  • UTF-8 có cơ chế phát hiện và khôi phục lỗi tích hợp, nên có thể nhận diện các chuỗi byte UTF-8 hoàn chỉnh và hợp lệ
  • Extended grapheme cluster, hay grapheme, là đơn vị cần được lặp lại, chứ không phải code point
  • Unicode được cập nhật hằng năm, và các quy tắc định nghĩa grapheme cluster cũng thay đổi mỗi năm
  • Unicode có thể được hiển thị khác nhau tùy theo locale
  • Cặp surrogate trong Unicode là hai đơn vị UTF-16 được dùng để mã hóa một code point Unicode duy nhất
  • UTF-16 vẫn được dùng làm biểu diễn trong bộ nhớ trên một số hệ thống
  • Chuỗi Unicode cần được chuẩn hóa trước khi so sánh
  • Bài viết nhấn mạnh tầm quan trọng của việc dùng thư viện Unicode ngay cả với những phép toán cơ bản như strlen, indexOf, substring

3 bình luận

 
kimws 2023-10-04

Trong trường hợp "‍♂️".length, Python 3.11 trả về 1.

 
kimws 2023-10-04

Emoji đang bị lỗi hiển thị trong phần bình luận.

 
GN⁺ 2023-10-03
Ý kiến trên Hacker News
  • Bài viết này bàn về sự phức tạp của Unicode và cách áp dụng nó trong phát triển phần mềm.
  • Một người bình luận không đồng ý với nhận định của bài viết rằng "cụm grapheme mở rộng" là cách tốt nhất để tư duy về ký tự trong Unicode, và cho rằng định nghĩa của "ký tự" có thể thay đổi tùy theo mục đích sử dụng.
  • Người bình luận này đề xuất rằng việc lặp trên chuỗi nên dựa trên code point, vốn là mức cơ bản mà Unicode hoạt động.
  • Một người bình luận khác khen bài viết và trả lời câu hỏi của tác giả về lý do ligature "fi" có code point riêng, giải thích rằng điều này là do nguyên tắc tương thích khôi phục dạng gốc của Unicode.
  • Một người bình luận phàn nàn về việc nhìn thấy nhiều con trỏ chuột trên màn hình trong lúc đọc trang.
  • Một người bình luận khác thảo luận về thách thức khi thiết lập locale của máy tính khi người dùng có thể đọc và viết nhiều ngôn ngữ, đồng thời chỉ trích Linux vì thiếu các tùy chọn tùy biến so với Windows.
  • Một người bình luận chia sẻ câu chuyện từng gặp vấn đề khi làm sạch dữ liệu nhập của người dùng cho các hệ thống bên thứ ba vì cách các ký tự có dấu được xử lý.
  • Một người bình luận khác phản bác lập luận của bài viết rằng code point không phải đơn vị tốt nhất để thao tác, và cho rằng có rất nhiều tình huống cần làm việc ở mức code point.
  • Một người bình luận chỉ trích ví dụ trong bài về cách mã hóa "é" trong Unicode, cho rằng nó dễ gây hiểu lầm và không đại diện cho cách ký tự thường được mã hóa.
  • Một người bình luận khác bàn về vấn đề các chữ biểu ý của tiếng Trung, tiếng Nhật và tiếng Hàn được gán cùng một code point, dẫn đến việc Windows hiển thị tên tệp tiếng Trung kém nếu locale hệ thống không phải tiếng Trung.
  • Một người bình luận bối rối và khó chịu vì trang có hiệu ứng con trỏ chuột.