Bài viết
Từ, ký tự và chữ hoa chữ thường: cách đếm văn bản thực sự hoạt động
Đếm văn bản nghe có vẻ là công việc duy nhất mà máy tính không thể làm sai, vậy mà hai công cụ vẫn có thể báo hai con số khác nhau cho cùng một đoạn văn, một emoji có thể ngốn mất 70 ký tự SMS của bạn, và "280 ký tự" trên X không hẳn mang ý nghĩa như vẻ ngoài của nó. Đằng sau những việc thường ngày như viết cho vừa một giới hạn, đổi tên biến hay lấp đầy một bản mock-up là vài quy tắc đáng để biết. Bài viết này đi qua từng quy tắc đó, dùng chính các công cụ văn bản nhỏ trên trang này làm ví dụ minh họa.
Điều gì được tính là một từ
Hầu hết các bộ đếm, kể cả của chúng tôi, định nghĩa từ theo cách người đánh máy vẫn làm: một chuỗi ký tự nhìn thấy được, nằm giữa các khoảng trắng hoặc dấu xuống dòng. Chỉ riêng quy tắc này đã giải thích được phần lớn sự bất đồng. "state-of-the-art" trong tiếng Anh là một từ hay bốn từ? Theo cách tách bằng khoảng trắng, đó là một từ. Số, URL và địa chỉ email cũng mỗi thứ được tính là một từ. Quy ước này không dùng được cho các ngôn ngữ viết không có khoảng trắng: trong tiếng Trung hay tiếng Nhật không có khoảng trắng để tách, nên "số lượng từ" không mang nhiều ý nghĩa và nên dùng số lượng ký tự thay thế. Ước tính thời gian đọc chồng thêm một quy ước nữa lên trên: bộ đếm từ của chúng tôi lấy số từ chia cho 200 từ mỗi phút, một tốc độ trung bình phổ biến cho việc đọc thầm ở người trưởng thành, nên hãy xem kết quả này như một con số để lên kế hoạch, không phải một lời hứa chính xác.
Một ký tự không phải lúc nào cũng là một biểu tượng
Đếm ký tự còn mơ hồ hơn, vì văn bản Unicode có nhiều lớp. Thứ bạn cảm nhận là một ký tự (grapheme) có thể được ghép từ nhiều điểm mã (code point), và mỗi điểm mã chiếm một hoặc hai trong số các đơn vị 16-bit mà thuộc tính length của JavaScript đếm. Emoji mặt cười toe toét là một grapheme nhưng chiếm hai đơn vị đó, nên một bộ đếm đơn giản sẽ báo là 2. Emoji gia đình được ghép từ nhiều emoji người là một grapheme, năm điểm mã và tám đơn vị. Ngay cả văn bản thuần túy cũng gặp vấn đề này: "café" có thể được lưu với é là một điểm mã, hoặc là một chữ e theo sau bởi một dấu kết hợp, giống hệt nhau trên màn hình nhưng khác nhau khi đếm. Đây là lý do hai bộ đếm không khớp nhau: chúng đo những lớp khác nhau. Quy tắc gộp các điểm mã thành ký tự mà người dùng cảm nhận được chuẩn hóa trong phụ lục phân đoạn văn bản của Unicode (UAX #29), và các bộ đếm được xây dựng đúng chuẩn đều tuân theo quy tắc đó.

Những giới hạn mà bạn thực sự đang đếm cho nó
Giới hạn ký tự là nơi việc đếm bắt đầu liên quan đến tiền bạc. Một tin SMS mang được 160 ký tự trong bảng chữ cái GSM-7 gọn nhẹ, nhưng chỉ một ký tự nằm ngoài đó (một emoji, hoặc một chữ cái mà bảng chữ cái này không có) là toàn bộ tin nhắn chuyển sang UCS-2 và giới hạn tụt xuống còn 70; tin nhắn dài được chia thành các phần 153 hoặc 67 ký tự, mỗi phần tính cước riêng. X cho phép 280 ký tự mỗi bài đăng, nhưng gán trọng số cho từng ký tự: mọi URL đều tính là 23 ký tự bất kể độ dài thực, còn hầu hết emoji và ký tự CJK (Trung, Nhật, Hàn) tính là 2. Đoạn trích tìm kiếm lại dùng giới hạn mềm: Google cắt tiêu đề và mô tả theo chiều rộng pixel, nên những con số quen thuộc như 60 ký tự cho tiêu đề và 155 ký tự cho mô tả chỉ là quy ước làm việc chứ không phải sự đảm bảo. Khi một giới hạn thực sự quan trọng, hãy đếm theo đúng quy tắc mà nền tảng đó dùng, và chừa thêm khoảng dư.
Chữ hoa chữ thường là một quy ước, và mỗi kiểu có chỗ đứng riêng
Đổi chữ hoa chữ thường nghe có vẻ tầm thường cho đến khi bạn gặp phải những quy ước chồng chất lên trên nó. Đây là điều liên quan đến văn bản chữ Latinh, chẳng hạn như tên định danh trong code hay tiêu đề tiếng Anh. Văn xuôi có Title Case, được các tiêu đề báo Mỹ ưa chuộng, và sentence case, được hầu hết hướng dẫn văn phong châu Âu ưa thích hơn. Code có các họ kiểu riêng: camelCase cho biến trong JavaScript và Java, PascalCase cho tên lớp và component, snake_case trong Python và cơ sở dữ liệu, SCREAMING_SNAKE_CASE cho hằng số, và kebab-case cho lớp CSS, tên tệp và slug URL, nơi chữ thường tránh được cái bẫy kinh điển là hai liên kết chỉ khác nhau ở chữ hoa chữ thường. Chuyển đổi thủ công vài định danh thì không sao; chuyển đổi một danh sách tám mươi mục là cách lỗi gõ ra đời. Công cụ chuyển đổi chữ hoa chữ thường áp dụng phép biến đổi này một cách máy móc, kể cả những phần rắc rối như quyết định xử lý viết tắt hay các dấu phân cách sẵn có ra sao.

Văn bản lấp chỗ trống, và những tệp mà điện thoại của bạn nhất quyết không mở
Hai việc nữa hoàn thiện danh sách này. Bố cục được đánh giá bằng văn bản giữ chỗ vì các câu văn thật sẽ kéo sự chú ý về nội dung của chúng; lorem ipsum hiệu quả chính xác vì nó gần như, nhưng không hẳn là, tiếng Latinh có thể đọc được. Công cụ tạo văn bản của chúng tôi tạo ra nó theo đoạn, câu hoặc từ, nên một bản mock-up có thể được lấp đầy đến độ dài thực tế thay vì lặp đi lặp lại một khối dán duy nhất. Và khi ai đó gửi một tệp .md, .json, .csv hay .log mà điện thoại nhất quyết không mở, một trình xem văn bản chạy trên trình duyệt sẽ hiển thị nó mà không cần cài trình soạn thảo hay chuyển tệp đến một trang chuyển đổi nào đó. Tất cả những gì nói ở trên, kể cả việc đếm, đều chạy hoàn toàn trong trình duyệt của bạn: văn bản không bao giờ rời khỏi thiết bị của bạn, điều này quan trọng hơn bình thường khi thứ bạn đang đo là một bản nháp, một hợp đồng, hay một tệp log đầy đường dẫn nội bộ.
Công cụ trong bài viết này
- Bộ đếm từĐếm từ, ký tự, câu, đoạn văn và ước tính thời gian đọc. Trực tiếp, không tải lên.
- Chuyển kiểu chữChuyển văn bản giữa camelCase, snake_case, kebab-case, Title Case và hơn nữa. Không tải lên.
- Trình tạo Lorem IpsumTạo văn bản giữ chỗ lorem ipsum theo đoạn văn, câu hoặc từ. Sao chép chỉ với một cú nhấp. Không tải lên.
- Trình xem văn bản / mãMở các tệp văn bản và mã mà điện thoại của bạn từ chối, Markdown, HTML, JSON, CSV, XML và hơn nữa.
Câu hỏi thường gặp
Một trang chứa được bao nhiêu từ?
Quy ước xuất bản là khoảng 500 từ cho một trang giãn dòng đơn và khoảng 250 từ cho trang giãn dòng đôi, với giả định dùng phông chữ 12 điểm chuẩn trên giấy A4 hoặc letter. Tài liệu thực tế lệch khỏi những con số này mỗi khi phông chữ, lề hay tiêu đề thay đổi, đó là lý do các bài tập và bài nộp ngày càng quy định số từ thay vì số trang. Nếu bạn đã có văn bản trong tay, hãy đếm trực tiếp và bỏ qua ước tính; các quy ước về trang chỉ hữu ích trước khi văn bản tồn tại.
Lorem ipsum thực ra có nghĩa là gì?
Đó là tiếng Latinh bị xáo trộn, không phải văn bản vô nghĩa. Đoạn văn tiêu chuẩn được cắt và xáo trộn lại từ De finibus bonorum et malorum của Cicero, một tác phẩm triết học từ năm 45 trước Công nguyên; đoạn "dolorem ipsum" có nghĩa là "nỗi đau tự thân". Việc xáo trộn chính là điểm mấu chốt: văn bản trông giống ngôn ngữ tự nhiên, với độ dài từ và nhịp câu hợp lý, nhưng chống lại việc bị đọc, nên người xem đánh giá bố cục thay vì nội dung. Sự lan truyền hiện đại của nó thường được ghi nhận là nhờ các tấm decal chuyển hình Letraset vào thập niên 1960 và phần mềm dàn trang desktop vào thập niên 1980.
Vì sao một nền tảng lại đếm ít ký tự hơn bộ đếm của tôi?
Vì các nền tảng đếm theo trọng số riêng của họ. X bắt đầu từ 280 nhưng tính mỗi URL là 23 ký tự và hầu hết emoji cùng ký tự CJK là 2 ký tự mỗi thứ. Cổng SMS chuyển toàn bộ tin nhắn từ bảng chữ cái GSM-7 160 ký tự sang chế độ UCS-2 70 ký tự ngay khi có một ký tự cần đến nó. Và bất kỳ nền tảng nào cũng có thể đếm theo đơn vị mã thay vì grapheme, nên chỉ một emoji gia đình cũng có thể ngốn hết 8 ký tự trong giới hạn. Khi con số trên nút bấm không khớp với bộ đếm của bạn, quy tắc của nền tảng sẽ thắng; hãy viết dư ra một chút hoặc kiểm tra bằng chính bộ đếm của nền tảng trước khi gửi.