悦省yueser.com

← 全部指南

字符统计怎么算?字符数、单词数与行数的真实口径

同一段文字,在不同地方显示的字数经常对不上。多数时候不是谁算错了,而是「字」的定义不同:有的把空格换行算进去,有的按词算,有的按 UTF-16 码元算。

打开工具:字符统计

什么时候真的需要数一遍

征稿启事写「一千字以内」、期刊摘要限 250 词、简历自我评价限 300 字,这类硬性要求都需要先数再改。翻译报价常按千字计费,交稿前确认源文与译文的字数,能避免结算时对不上账;投放素材的标题、描述也有平台侧的长度上限,超一个字符就提交失败。

还有一种情况是检查粘贴是否完整。聊天窗口、表单的 maxlength、部分后台输入框会静默截断内容,粘完看着没问题,实际结尾已经丢了。把原文和粘贴后的内容各数一次,字符数一致才说明没被吃掉,这比通读一遍快得多。

四个数字分别是怎么算出来的

第一行的「字符」按 UTF-16 码元计数,也就是 JavaScript 里字符串的 length:空格、换行、标点都算一个,emoji 和部分生僻汉字占两个。第二行的「中文/日文字」只统计汉字与平假名、片假名区间的字符,标点和空格不算在内,所以它通常比第一行小。

第三行的「英文单词」先把汉字与假名替换成空格,再按字母、数字和撇号切分。连字符会断开,state-of-the-art 算四个词,don't 算一个词。第四行「行数」等于换行符个数加一,因此空文本也会显示一行,末尾多敲一个回车就会多出一行。

它数不了的东西,以及替代做法

这里没有按 UTF-8 字节计数,也不模拟平台的加权规则。有的平台会把任何链接固定算成 23 个字符,有的按全角半角折算,这些规则各家不同,通用计数器无法覆盖。中文的「词数」同样数不出来,中文需要分词,按空格切分只会得到很少几个词。

要按字节看,命令行 wc -c 给的是字节数,wc -m 给的是字符数,两者在纯 ASCII 文本里相同,一旦有中文就会差三倍。Word 的「字数统计」按词与汉字分别累计,和浏览器里数出来的结果本来就允许有差异,比较时固定用同一种口径即可。

常见问题

字符数包含空格和换行吗?

包含。这里的字符数按字符串长度计算,空格、制表符、换行、标点各算一个。如果平台规定的是「不含空格的字数」,请把结果减去空格数量,或先删掉空格再统计,避免按错误的口径裁剪内容。

为什么一个 emoji 算两个字符?

因为计数按 UTF-16 码元进行,而大多数 emoji 的码位超过 U+FFFF,需要用两个码元表示。同样,部分生僻汉字和音乐符号也会记 2。若平台按 Unicode 码位计数,你需要把这类字符按 1 个重新算。

中文字数怎么统计才准?

看「中文/日文字」那一行,它逐个数汉字,不含标点和空格,和多数中文平台的字数口径接近。但有的平台把标点也算进篇幅,投稿前最好用平台自己的预览或计数器复核一次,别只信通用工具。

相关工具:字符统计