Một điều mà từ lâu đã làm tôi bối rối là rất nhiều phần mềm sử dụng thuật ngữ "bộ ký tự" và "mã hóa" làm từ đồng nghĩa.
Khi mọi người đề cập đến một "mã hóa" unicode, họ luôn có nghĩa là một quy tắc biểu diễn các ký tự unicode dưới dạng một chuỗi các byte - như ASCII hoặc UTF-8. Điều này có vẻ hợp lý và trực quan; ý tưởng là bạn đang "mã hóa" các ký tự đó dưới dạng byte bằng cách sử dụng bộ quy tắc được chỉ định.
Vì các quy tắc này đôi khi chỉ cung cấp khả năng "mã hóa" một số tập hợp con của tất cả các ký tự unicode, bạn có thể tưởng tượng rằng một "bộ ký tự" - viết tắt của 'bộ ký tự' - chỉ đơn giản có nghĩa là một bộ ký tự unicode - mà không quan tâm đến cách những ký tự được mã hóa. Do đó, một mã hóa sẽ bao hàm một bộ ký tự (một mã hóa như ASCII, chỉ có các quy tắc để mã hóa 128 ký tự, sẽ được liên kết với bộ ký tự của 128 ký tự đó) nhưng một bộ ký tự không cần ngụ ý mã hóa (ví dụ: UTF-8, UTF -16 và UTF-32 đều là các bảng mã khác nhau nhưng có thể mã hóa cùng một bộ ký tự).
Tuy nhiên - và đây là mấu chốt của câu hỏi của tôi - cách sử dụng từ "bộ ký tự" trong thế giới thực không khớp với cách xây dựng của từ này. Nó hầu như luôn được sử dụng để có nghĩa là "mã hóa".
Ví dụ:
- Các
charset
thuộc tính trong HTML được sử dụng để xác định một mã hóa Charset
s trong Java là mã hóacharset
s vàcharacter sets
trong MySQL, một lần nữa, mã hóa
Việc sử dụng ngôn ngữ này gây tò mò bao nhiêu tuổi và làm thế nào mà định nghĩa phản trực giác về 'bộ ký tự' này tồn tại? Liệu nó có lẽ xuất phát từ một thời gian khi có thực sự là , trong thực tế, một ánh xạ một-một giữa các bảng mã sử dụng và bộ ký tự họ được hỗ trợ? Hoặc có một số tiêu chuẩn hoặc đặc điểm kỹ thuật có ảnh hưởng đặc biệt quyết định định nghĩa của từ này?
charset
trước tiêu chuẩn Unicode, do đó, mặc dù nó có thể không phải là "ánh xạ một-một", các ký tự cần thiết cho một tài liệu có xu hướng buộc phải lựa chọn mã hóa. Nhưng tôi không có thời gian để nghiên cứu lịch sử thực sự của từ này ...