Byte Count
Kích thước dữ liệu văn bản tính bằng byte sau khi mã hóa. Cùng một ký tự có thể có kích thước byte khác nhau tùy thuộc vào mã hóa.
Đếm byte là tổng số byte (đơn vị 8-bit) cần thiết để biểu diễn dữ liệu văn bản trên máy tính. Đếm ký tự và đếm byte là hai khái niệm khác nhau cơ bản - cùng một văn bản có thể có kích thước byte rất khác nhau tùy thuộc vào mã hóa. Ví dụ, văn bản tiếng Nhật hai ký tự "文字" là 6 byte trong UTF-8, 4 byte trong Shift_JIS và 4 byte trong UTF-16 (không tính BOM). Hiểu sự khác biệt này là thiết yếu cho phát triển phần mềm và quản lý dữ liệu.
Trong UTF-8, kích thước byte của mỗi ký tự dao động từ 1 đến 4 byte tùy thuộc vào loại ký tự. Ký tự ASCII (chữ và số nửa chiều rộng và ký hiệu) sử dụng 1 byte, ký tự Latin mở rộng (chữ có dấu, v.v.) sử dụng 2 byte, ký tự CJK (Trung, Nhật, Hàn) sử dụng 3 byte, và emoji hoặc ký tự bổ sung sử dụng 4 byte. Ngược lại, Shift_JIS biểu diễn ký tự tiếng Nhật trong 2 byte, và GBK mã hóa ký tự tiếng Trung trong 2 byte. UTF-16 sử dụng 2 byte cho hầu hết ký tự nhưng 4 byte cho ký tự cặp thay thế. Hướng dẫn mã hóa ký tự giải thích các khác biệt này chi tiết.
Đếm byte quan trọng trong nhiều tình huống thực tế. Cột VARCHAR cơ sở dữ liệu có thể định nghĩa giới hạn bằng byte thay vì ký tự - với cài đặt utf8mb4 của MySQL, bạn cần tính đến tối đa 4 byte mỗi ký tự, và VARCHAR(255) có thể có nghĩa là 255 byte, không phải 255 ký tự (điều này thay đổi theo DBMS và phiên bản). Giới hạn kích thước yêu cầu/phản hồi API thường được đặt bằng byte, với AWS API Gateway mặc định giới hạn payload 10 MB. Giới hạn kích thước tệp đính kèm email, giới hạn ký tự SMS (thực tế dựa trên byte) và giới hạn độ dài URL (2.048-8.192 byte tùy thuộc vào trình duyệt) đều dựa trên byte.
Một hiểu lầm phổ biến là biết số ký tự tự động cho biết số byte. Đối với văn bản trộn lẫn các ngôn ngữ như tiếng Anh và tiếng Nhật, tính toán chính xác số byte chỉ từ số ký tự là khó khăn. Ví dụ, "Hello 世界" là 8 ký tự nhưng 11 byte trong UTF-8 (5 + 6). Các ngôn ngữ lập trình cũng khác nhau trong biểu diễn chuỗi nội bộ - string.length của JavaScript trả về số đơn vị mã UTF-16, không khớp với số ký tự cho ký tự cặp thay thế. Để có số byte chính xác, sử dụng new TextEncoder().encode(str).length trong JavaScript hoặc len(str.encode('utf-8')) trong Python. Sách thiết kế cơ sở dữ liệu bao gồm các cân nhắc cấp byte cho lập kế hoạch lược đồ.
Trong các công cụ đếm ký tự, hiển thị số byte cùng với số ký tự là tính năng quan trọng. Bằng cách hiển thị cả hai giá trị theo thời gian thực khi người dùng nhập, họ có thể xác định ngay liệu văn bản có phù hợp với giới hạn lưu trữ cơ sở dữ liệu hoặc ràng buộc API hay không. Điều này đặc biệt có giá trị cho văn bản đa ngôn ngữ, nơi khoảng cách giữa số ký tự và số byte có thể đáng kể, và biết cả hai giá trị giúp ngăn ngừa cắt ngắn dữ liệu và lỗi mã hóa.