Nếu bạn quan tâm đến cách các ký tự được lưu trữ, bạn có thể truy cập www.unicode.org và xem xung quanh. Ở đầu trang chính của họ là liên kết "Biểu đồ mã" hiển thị cho bạn tất cả các mã ký tự có sẵn bằng Unicode.
Nói chung, có hơn một triệu mã có sẵn trong Unicode (không phải tất cả chúng đều được sử dụng). Một byte có thể chứa 256 giá trị khác nhau, vì vậy bạn sẽ cần ba byte nếu bạn muốn lưu trữ mọi mã Unicode có thể.
Thay vào đó, Unicode thường được lưu trữ trong mã hóa "UTF-8", sử dụng ít byte hơn cho một số ký tự và nhiều hơn cho các ký tự khác. 128 giá trị mã đầu tiên được lưu trữ trong một byte đơn, tối đa 2048 giá trị mã đầu tiên được lưu trữ trong hai byte, tối đa 65536 được lưu trữ trong ba byte và phần còn lại mất bốn byte. Điều này đã được sắp xếp sao cho các giá trị mã được sử dụng thường chiếm ít không gian hơn. AZ, az, 0-9 và! @ $% ^ & * () - [} {}; ': "|,. / <>? Và một số mà tôi quên mất một byte, gần như toàn bộ tiếng Anh, 98% Tiếng Đức và tiếng Pháp (chỉ cần đoán) có thể được lưu trữ trong một byte cho mỗi ký tự và đây là những ký tự được sử dụng nhiều nhất. Cyrillic, Hy Lạp, tiếng Do Thái, tiếng Ả Rập và một số người khác sử dụng hai byte cho mỗi ký tự. , Hàn Quốc, Thái Lan, tấn biểu tượng toán học, có thể được viết bằng ba byte cho mỗi ký tự. Những thứ hiếm (nếu bạn muốn viết văn bản trong Tuyến tính A hoặc Tuyến tính B, Biểu tượng cảm xúc) mất bốn byte.
Một mã hóa khác là UTF-16. Mọi thứ cần 1, 2 hoặc 3 byte trong UTF-8 đều mất hai byte trong UTF-16. Đó là một lợi thế nếu bạn có văn bản tiếng Trung hoặc tiếng Nhật với rất ít ký tự Latin ở giữa.
Về các lý do cho thiết kế UTF-8: Nó có một số lợi thế so với các thiết kế khác. Họ đang:
Khả năng tương thích với các ký tự US-ASCII
Nhỏ gọn hợp lý
Tự đồng bộ hóa: Điều này có nghĩa là nếu bạn được cung cấp một phần của chuỗi byte là các ký tự trong mã hóa UTF-8, bạn có thể tìm ra nơi ký tự bắt đầu. Trong một số mã hóa, cả xy và yx đều có thể là mã hóa hợp lệ của các ký tự, vì vậy nếu bạn được cung cấp một phần của chuỗi ... xyxyxyxyxyxy ... bạn không thể biết mình có ký tự nào.
Sắp xếp chính xác: Nếu bạn sắp xếp các chuỗi chứa các ký tự được mã hóa UTF-8 theo các giá trị byte của chúng, thì chúng sẽ tự động được sắp xếp chính xác theo các giá trị Unicode của chúng.
Tương thích với mã byte đơn: Hầu hết các mã giả định các giá trị byte đơn hoạt động chính xác với các ký tự được mã hóa UTF-8.
Cộng với bất cứ lý do gì tôi quên.