字符统计怎么算?字符数、单词数与行数的真实口径
同一段文字,在不同地方显示的字数经常对不上。多数时候不是谁算错了,而是「字」的定义不同:有的把空格换行算进去,有的按词算,有的按 UTF-16 码元算。
什么时候真的需要数一遍
征稿启事写「一千字以内」、期刊摘要限 250 词、简历自我评价限 300 字,这类硬性要求都需要先数再改。翻译报价常按千字计费,交稿前确认源文与译文的字数,能避免结算时对不上账;投放素材的标题、描述也有平台侧的长度上限,超一个字符就提交失败。
还有一种情况是检查粘贴是否完整。聊天窗口、表单的 maxlength、部分后台输入框会静默截断内容,粘完看着没问题,实际结尾已经丢了。把原文和粘贴后的内容各数一次,字符数一致才说明没被吃掉,这比通读一遍快得多。
- 投稿、摘要、简历有明确字数上限时
- 翻译按千字报价,交稿前核对字数
- 粘贴到表单或聊天框后,确认没被截断
- 对比两个版本改了多少字
四个数字分别是怎么算出来的
第一行的「字符」按 UTF-16 码元计数,也就是 JavaScript 里字符串的 length:空格、换行、标点都算一个,emoji 和部分生僻汉字占两个。第二行的「中文/日文字」只统计汉字与平假名、片假名区间的字符,标点和空格不算在内,所以它通常比第一行小。
第三行的「英文单词」先把汉字与假名替换成空格,再按字母、数字和撇号切分。连字符会断开,state-of-the-art 算四个词,don't 算一个词。第四行「行数」等于换行符个数加一,因此空文本也会显示一行,末尾多敲一个回车就会多出一行。
- 字符数:含空格、换行、标点,emoji 记 2
- 中文/日文字:只数汉字与假名
- 英文单词:连字符断开,撇号不断开
- 行数:换行符个数 + 1,末尾空行也算
它数不了的东西,以及替代做法
这里没有按 UTF-8 字节计数,也不模拟平台的加权规则。有的平台会把任何链接固定算成 23 个字符,有的按全角半角折算,这些规则各家不同,通用计数器无法覆盖。中文的「词数」同样数不出来,中文需要分词,按空格切分只会得到很少几个词。
要按字节看,命令行 wc -c 给的是字节数,wc -m 给的是字符数,两者在纯 ASCII 文本里相同,一旦有中文就会差三倍。Word 的「字数统计」按词与汉字分别累计,和浏览器里数出来的结果本来就允许有差异,比较时固定用同一种口径即可。
- 按字节:wc -c;按字符:wc -m
- 平台加权规则:只能用该平台自己的计数器
- 中文分词:需要专门的分词工具
- Word 字数:口径不同,不要混着比
常见问题
字符数包含空格和换行吗?
包含。这里的字符数按字符串长度计算,空格、制表符、换行、标点各算一个。如果平台规定的是「不含空格的字数」,请把结果减去空格数量,或先删掉空格再统计,避免按错误的口径裁剪内容。
为什么一个 emoji 算两个字符?
因为计数按 UTF-16 码元进行,而大多数 emoji 的码位超过 U+FFFF,需要用两个码元表示。同样,部分生僻汉字和音乐符号也会记 2。若平台按 Unicode 码位计数,你需要把这类字符按 1 个重新算。
中文字数怎么统计才准?
看「中文/日文字」那一行,它逐个数汉字,不含标点和空格,和多数中文平台的字数口径接近。但有的平台把标点也算进篇幅,投稿前最好用平台自己的预览或计数器复核一次,别只信通用工具。
相关工具:字符统计