Plain Text

Dữ liệu văn bản chỉ chứa ký tự thuần túy không có định dạng. Định dạng cơ bản cho mã nguồn và tệp cấu hình.

Plain text là dữ liệu văn bản chỉ chứa ký tự thuần túy không có thông tin định dạng như phông chữ, kích thước, màu sắc hay bố cục. Nó đối lập với rich text (như tài liệu Word hoặc HTML) bao gồm siêu dữ liệu định dạng. Plain text có thể mở và chỉnh sửa bằng bất kỳ trình soạn thảo văn bản nào trên bất kỳ hệ điều hành nào, khiến nó trở thành định dạng dữ liệu di động và phổ quát nhất.

Plain text là nền tảng của lập trình và quản lý dữ liệu. Mã nguồn (.py, .js, .java), tệp cấu hình (.env, .yaml, .toml), dữ liệu CSV, JSON, XML, tệp Markdown, tệp log và script shell đều là plain text. Hệ thống kiểm soát phiên bản như Git được thiết kế để theo dõi thay đổi trong tệp plain text, và diff/merge hoạt động hiệu quả nhất với nội dung plain text. Bạn có thể tham khảo sách nền tảng lập trình về xử lý văn bản.

Mã hóa ký tự xác định cách byte trong tệp plain text được diễn giải thành ký tự. UTF-8 đã trở thành tiêu chuẩn thực tế, hỗ trợ hầu như tất cả ký tự trên thế giới trong khi tương thích ngược với ASCII. Tuy nhiên, các mã hóa cũ hơn như Shift_JIS (tiếng Nhật), EUC-KR (tiếng Hàn) và GB2312 (tiếng Trung) vẫn gặp trong hệ thống kế thừa. Mở tệp với mã hóa sai tạo ra mojibake (ký tự lộn xộn), một vấn đề phổ biến trong trao đổi dữ liệu quốc tế.

Trong bối cảnh web, hiểu sự khác biệt giữa plain text và HTML là quan trọng. Khi hiển thị nội dung do người dùng nhập dưới dạng HTML, các ký tự đặc biệt (<, >, &) phải được escape để ngăn chặn tấn công XSS. Ngược lại, khi xử lý dữ liệu dưới dạng plain text (MIME type text/plain), trình duyệt hiển thị nội dung nguyên trạng mà không diễn giải thẻ HTML.

Một quan niệm sai lầm phổ biến là tệp plain text luôn nhỏ. Mặc dù chúng thiếu chi phí định dạng, tệp log lớn, dump cơ sở dữ liệu và tập dữ liệu CSV có thể đạt hàng gigabyte. Ngoài ra, "plain text" không có nghĩa là "không có cấu trúc" - các định dạng như JSON, YAML và CSV là plain text với cấu trúc được xác định rõ. Bạn có thể tham khảo sách hướng dẫn xử lý định dạng dữ liệu để tìm hiểu thêm.

Từ góc độ đếm ký tự, plain text là định dạng đơn giản nhất để đếm vì không có thẻ đánh dấu hay siêu dữ liệu định dạng cần loại trừ. Số ký tự bạn thấy chính là số ký tự thực tế. Tuy nhiên, mã hóa ký tự ảnh hưởng đến số byte: cùng một văn bản tiếng Nhật có số byte khác nhau trong UTF-8 (3 byte/ký tự) so với Shift_JIS (2 byte/ký tự). Công cụ đếm ký tự giúp phân biệt giữa số ký tự và số byte.