编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 文本处理 / 字数统计

字数统计

实时统计字数、字符和行数。

输入文本

这个工具能做什么

把一段文字粘进输入框,工具会实时给出字符数(区分含空格与不含空格)、中文字数、英文单词数、行数,以及这段文字在 UTF-8 编码下占用的字节数。它解决的是「心里没底」的问题:写文案时不知道有没有超字数,做表单校验时不确定用户输入会不会撑爆数据库字段,或者想知道一段内容传输时到底占多少流量。逐字更新,不用点按钮,边改边看,改完立刻能对上。

不同口径的数字背后是不同的计数规则。字符数按 Unicode 码点计,一个汉字、一个字母、一个标点各算一个字符,含空格与不含空格的差别只在于是否把空白字符计进去。中文字数只统计落在 CJK 汉字区间(主要是 U+4E00–U+9FFF 这段常用汉字)里的方块字,字母、数字和标点都不计入。英文单词数按空白和标点切分,把连续的字母数字序列各算作一个词。字节数则是把文本按 UTF-8 编码后数字节:ASCII 字符占 1 字节,绝大多数汉字占 3 字节,emoji、部分生僻字这类超出基本多文种平面的字符占 4 字节。所以同一段「你好abc」,字符数是 5,字节数却是 3×2+3=9。

最常见的用法是控制字数。比如公众号标题要压在几十字以内、微博一条正文有字数上限、电商详情页某个字段要求不超过 30 字,把草稿贴进来一眼就知道差多少。字节数在后端场景里更关键:MySQL 里 varchar(50) 在 utf8mb4 下按字符算能存 50 个字,但如果字段或协议是按字节限制的,一个汉字就吃掉 3 个字节,50 字节只够放十几个汉字,提前量一下能避开「本地测试没问题、线上一存就被截断」的坑。短信也类似,纯中文按 70 字一条、超出后拆分计费,先估算字节数能少踩计费的雷。

有几个容易误解的点。一是 emoji 和部分特殊字符在底层由代理对(surrogate pair)表示,不同工具对「一个 emoji 算几个字符」的口径不一样,按码点还是按码元计会导致数字差几个,看到字符数比肉眼多通常就是这个原因。二是全角空格、不换行空格这类不可见字符也会计入字符数和字节数,从网页复制的文本尤其常见,数字对不上时先检查有没有混入它们。三是这里的中文字数只认汉字、不含中文标点,如果你的「字数」定义要把标点也算进去,应以字符数为准。整个统计都在浏览器本地完成,文本不会上传,贴敏感内容也不用担心。

字数统计是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“字数统计”、“字符统计”、“文字计数”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

字符数和中文字数有什么区别?
字符数把汉字、字母、数字、标点、空格等所有 Unicode 码点都算进去;中文字数只统计落在 CJK 汉字区间里的方块字,不含字母、数字和标点。所以一段中英混排的文本,字符数总是大于等于中文字数。
英文单词数是按什么规则统计的?
以空白字符和标点为分隔,把连续的字母、数字序列各算作一个单词。中文词之间没有空格,因此纯中文文本的单词数往往很小甚至为 0,衡量中文的量应看中文字数或字符数。
为什么中文的 UTF-8 字节数差不多是字数的 3 倍?
常用汉字位于 Unicode 基本多文种平面,在 UTF-8 下每个占 3 个字节,而 ASCII 字母和数字只占 1 字节。所以纯中文文本的字节数约为字数的 3 倍,emoji 或生僻字会达到 4 字节。
输入一个 emoji,字符数为什么会多加?
很多 emoji 在 Unicode 里超出基本多文种平面,在 UTF-16 中用一对代理项(surrogate pair)表示,按码元计数就会算成 2。有的表情还由多个码点加零宽连接符拼成(如带肤色的图案),数字会更大。
我粘贴的内容会上传到服务器吗?
不会。所有统计都在你的浏览器里用 JavaScript 完成,文本不发往任何服务器,适合处理未公开的文案、代码或含隐私的内容。

相关工具

查看全部「文本处理」工具 →

相关名词解释