Character Set
Tập hợp các ký tự được định nghĩa và hệ thống đánh số của chúng. ASCII, ISO 8859 và Unicode là các ví dụ tiêu biểu.
Bộ ký tự là tập hợp các ký tự được định nghĩa và các code point (số) được gán cho mỗi ký tự. ASCII định nghĩa 128 ký tự, ISO 8859-1 định nghĩa 256, và Unicode định nghĩa hơn 140.000. Đây là cơ chế cơ bản nhất để máy tính xử lý văn bản, và việc chọn bộ ký tự quyết định phạm vi ký tự có thể biểu diễn.
Bộ ký tự và mã hóa ký tự thường bị nhầm lẫn nhưng là hai khái niệm khác biệt rõ ràng. Bộ ký tự định nghĩa "số nào được gán cho ký tự nào" (bảng ánh xạ), trong khi mã hóa định nghĩa "số đó được biểu diễn dưới dạng byte như thế nào". Đây là lý do tại sao nhiều mã hóa (UTF-8, UTF-16, UTF-32) tồn tại cho một bộ ký tự Unicode duy nhất. Sách giải thích mã hóa ký tự cung cấp phạm vi bao quát có hệ thống.
Trong lịch sử, các quốc gia và khu vực khác nhau đã phát triển bộ ký tự riêng. Nhật Bản sử dụng JIS X 0208 (khoảng 6.800 ký tự), Trung Quốc sử dụng GB 2312 (khoảng 7.400 ký tự), và Hàn Quốc sử dụng KS X 1001. Các bộ ký tự này không tương thích lẫn nhau, và mở văn bản được tạo bằng bộ ký tự khác sẽ tạo ra ký tự lỗi (mojibake). Unicode được tạo ra để giải quyết vấn đề này bằng cách thống nhất các ký tự trên thế giới vào một hệ thống duy nhất.
<meta charset="UTF-8"> của HTML về mặt kỹ thuật chỉ định mã hóa ký tự, nhưng tên "charset" (bộ ký tự) được sử dụng vì lý do lịch sử. Trong phát triển web, UTF-8 đã trở thành tiêu chuẩn thực tế, và W3C khuyến nghị sử dụng nó. Chỉ định nó trong cả header phản hồi HTTP (Content-Type: text/html; charset=UTF-8) và thẻ meta HTML là phương pháp tốt nhất.
Một vấn đề phổ biến là cài đặt bộ ký tự không khớp trong cơ sở dữ liệu. Trong MySQL, chỉ định utf8 chỉ xử lý ký tự tối đa 3 byte, nghĩa là emoji (4 byte) không thể lưu trữ. Sử dụng utf8mb4 cho phép lưu trữ chính xác tất cả ký tự Unicode.
Đối với đếm ký tự, bộ ký tự quyết định phạm vi ký tự có thể biểu diễn. ASCII không thể biểu diễn tiếng Nhật, và Shift_JIS không thể xử lý một số ký tự Unicode. Unicode xử lý ký tự từ khắp nơi trên thế giới một cách thống nhất, khiến bộ ký tự dựa trên Unicode trở nên thiết yếu cho các hệ thống đa ngôn ngữ. Sách quốc tế hóa và mã ký tự cung cấp thêm ngữ cảnh.