文本工具

字符统计

即时统计字符数(含空格与不含空格)、单词数和行数。

给这个工具评分

如何使用 字符统计

  1. 输入或粘贴你的文字。
  2. 字符数、单词数和行数会实时更新。

关于 字符统计

“字符”这个词听起来很精确,但它其实是计算机领域里最模糊的概念之一,而这种模糊性正是使用统计工具的意义所在。本工具统计的是 UTF-16 代码单元数——这与 JavaScript 和 Java 计算字符串长度所用的度量方式相同。对于普通拉丁文本,这与你看到的结果一致:一个字母就是一个字符。但超出这个范围后,结果会以出人意料的方式产生分歧。一个普通表情符号(如😀)会被计为2个字符。像🇬🇧这样的旗帜表情会被计为4个字符,因为它其实是两个组合在一起的区域指示符号。带肤色修饰符的表情同样计为4个字符——在阅读者眼中是一个符号,实际却由多个代码点组成。带重音的字母可能计为1个或2个字符,取决于它是作为单个预组合字符输入的,还是作为字母加组合重音符号输入的。

这一点之所以重要,是因为各平台的计数方式各不相同。短信是最典型的陷阱:在 GSM-7 字符集内,一条短信最多容纳160个字符,但只要出现一个不在该字符集内的字符——比如从 Word 里粘贴过来的弯引号、一个表情符号,或任何非拉丁字母——整条短信就会切换为 UCS-2 编码,字数上限随之降到70。数据库字段是另一个常见陷阱:按字节设定大小的列,能容纳的字符数往往比预期的少,因为在 UTF-8 编码下,任何超出 ASCII 范围的字符都会占用不止一个字节。

统计结果会随输入实时更新。“字符数(不含空格)”会去除所有空白字符,不仅是空格,还包括制表符和换行符。行数按换行符计算。所有计算都在你的浏览器中完成。如需统计句子数、段落数和阅读时间,请使用字数统计工具

常见问题

空格算作字符吗?

这取决于具体的计数标准,所以本工具同时显示两个结果。主要数字包含空格;第二个数字则去除所有空白字符,包括制表符和换行符。请根据你所遵循的字数限制选用对应的数字。

为什么一个表情符号会算作两个字符?

表情符号超出了单个 UTF-16 代码单元所能表示的范围,因此以一对代码单元的形式存储。这里的长度是按代码单元计算的,所以一个普通表情符号会显示为2。旗帜和带肤色修饰符的表情由多个组合代码点构成,会计为4。

字符和字节是一回事吗?

不是。在 UTF-8 编码下,ASCII 字符占1个字节,带重音的字母占2个字节,大多数亚洲文字占3个字节,表情符号占4个字节。如果限制是按字节而不是按字符设定的,这里显示的字符数会比字节数低。

为什么我的短信显示70个字符而不是160个?

因为短信中有一个字符不在 GSM-7 字符集范围内。哪怕只有一个弯引号或表情符号,也会让整条短信切换为 UCS-2 编码,单条短信的字数上限也随之从160降到70。去掉那一个字符即可恢复原来的上限。

行数是怎么统计的?

按换行符计算。一整行没有换行的文字算作一行,空文本框算作零行。显示区域中的自动换行不会产生新的行。