字数怎么统计才准?中文字符、英文单词与平台限字对照

同一段文字,Word 说 500 字、微博说还剩 30 字、公众号后台说超了——三个数都没错,因为它们数的根本不是同一样东西。「字数」不是一个客观数值,而是一套**口径**:数的是可见字符、汉字、英文单词,还是字节。想知道自己那段文字到底算多少,先确定要拿它去哪儿用,再用 在线字数统计 看多维度结果、用 文案限字检测 按平台口径核对。

  • 字数不是一个数,是一组口径:可见字符、汉字数、英文单词数、字节数各有各的用途。
  • 中文平台多按「可见字符」算,标点和空格通常都算;微博是 2 个英文字母算 1 字。
  • SEO 标题、淘宝标题按「显示宽度」算:一个汉字占 2、一个英文字母占 1。
  • 短信 70 字是 UCS-2 口径,纯英文短信能写 160;混进一个汉字就掉回 70。
  • emoji 和零宽字符是数不准的主因:一个 emoji 可能算 1、2 甚至 11。

为什么同一段文字,各处数出来的字数不一样

因为「字数」从来不是一个客观数值,而是一套需要先约定的口径:数的可以是可见字符、汉字、英文单词,也可以是字节。口径不同,同一段文字得到不同的数字是正常结果,不是哪个工具算错了。

一句话定义:字数统计是按某一套约定的计数口径,把一段文本折算成一个数量——先定口径,数字才有意义。

六种最常见的计数口径

真正在用的口径大致就下面这几种。看懂它们,基本能解释你遇到的所有「字数对不上」。

口径怎么数谁在用
可见字符肉眼看到几个就是几个,emoji 记 1,零宽字符不计多数中文平台的输入框倒计时
汉字数只数汉字本身,标点、空格、字母都不算稿费结算、论文正文量估算
微博口径汉字记 1,2 个半角字母或数字记 1微博的 140 字折叠线
显示宽度全角字符与 emoji 记 2,半角记 1SEO 标题、商品标题的截断判断
UTF-16 长度就是代码里的 str.length,emoji 代理对记 2老系统的 varchar、部分接口参数校验
字节数UTF-8 下一个汉字 3 字节,GBK 下 2 字节数据库字段长度、老式短信网关

先问「拿去哪儿用」,再选口径

判断该用哪个口径,只需要回答一个问题:这段文字最终要交给谁。交给读者看,关心的是汉字数与阅读时长;要发到平台,就得按那个平台的输入框口径;要写进数据库字段或走短信通道,看的是字节和编码。拿汉字数去核对微博的剩余字数,或者拿字符数去估短信条数,都会得到误导性的结论。

中文字数和英文单词分别是怎么数的

中文按「字」数、英文按「词」数,这是两套不同的计量单位,不能直接相加,也不能互相换算。一份中英混排的稿子,正确做法是两个数分别看。

中文:默认只数汉字,标点单独算

本站的中文字数默认只统计汉字本身(Unicode 里归属汉字的字符,含扩展区的生僻字),中文标点、全角空格都不计入。这个口径对应的是「这篇稿子有多少正文内容」。如果你要核对的是平台输入框,那边通常把标点也算进去,可以打开「含全角标点」的口径再看一遍——两个数一起看,才知道自己是内容超了还是标点太密。

需要留神的是全角空格:它属于空白字符而不是标点,所以不计入中文字数,但在按可见字符或显示宽度计数的平台上,它是实打实占位置的。用全角空格排版缩进的文案,很容易在提交时莫名其妙超字。

英文:连续字母算一个词,撇号连字符不拆开

英文单词按「一串连续的拉丁字母」来切,中间允许撇号和连字符把它连起来。所以 it's 是 1 个词而不是 2 个,well-known 也是 1 个词。数字串单独归类,3.14、1,000 各算 1 个,不会因为里面有小数点或千分位就被拆成几段。

标点按 Unicode 的标点类统计,中英文标点都算在内;而 +、=、<、>、$ 这类数学与货币符号属于符号类,不计入标点,emoji 同理。这个划分和多数写作软件一致,也是为什么「标点数」和你手动数的结果偶尔会差几个。

各平台限字口径对照:微博、小红书、短信、SEO

平台限字之所以难对齐,是因为每个平台选的口径都不一样,而输入框里只显示一个数字,从不告诉你它按什么在数。下面这张表是几个高频场景的实际口径。

场景常见上限计数口径
微博折叠线140汉字 1、2 个半角字母数字 1
小红书标题20可见字符
抖音简介55可见字符
公众号标题 / 摘要64 / 120可见字符
B 站标题 / 简介80 / 250可见字符
淘宝商品标题60显示宽度(汉字 2)
SEO 标题 / 描述60 / 160显示宽度(汉字 2)
单条短信70 或 160UCS-2 / GSM-7 编码

显示宽度口径:为什么纯中文标题只能写一半

SEO 标题和商品标题按显示宽度算,一个汉字占 2 格、一个半角字母数字占 1 格。所以标称 60 的上限,纯中文只能写 30 个汉字,中英混排则介于两者之间。这也解释了为什么英文站的标题看着长得多却不会被截断。写中文标题时,把品牌词、后缀这些次要信息放在末尾,被截掉也不影响主信息传达。

短信口径:一个汉字就能让你从 160 掉到 70

短信按编码分档:内容全部落在 GSM 基本字符表里(英文字母、数字、常见符号)时用 GSM-7,单条 160 个字符;一旦出现任何一个汉字或中文标点,整条短信必须切到 UCS-2,单条立刻降到 70 个字符。注意是「整条」降级,不是超出部分降级。所以营销短信里那句顺手加上的中文签名,可能直接让计费条数翻倍。

还有个容易忽略的细节:换页符、^、{}、[、]、~、|、€ 这几个字符虽然能用 GSM-7 发送,但每个要占 2 个单位。一条看起来只有 158 个字符的英文短信,可能因为里面有两个方括号就超了。

数出来偏多偏少?emoji、零宽字符与全角的坑

「本地数着没超、提交时说超了」几乎都出自三类字符:emoji、看不见的零宽字符、以及被当成普通字符的全角符号。它们的共同点是——肉眼数不出来。

emoji:同一个符号在不同口径下能差十倍

单个 emoji 按可见字符算是 1,按 UTF-16 长度算通常是 2,按显示宽度算是 2。而由零宽连接符拼起来的组合 emoji(比如表示一家人的那类)在 UTF-16 口径下可能记到 10 以上。如果你的文案要提交给一个按 str.length 校验的老系统,几个 emoji 就足以造成几十个字符的偏差。碰到这种情况,把 emoji 挪到文案末尾或干脆去掉,比反复删正文更有效。

零宽字符:复制粘贴带进来的隐形长度

从网页、聊天软件、PDF 复制的文字常夹带零宽空格、字节序标记、软连字符。它们不显示、不占宽度,但在多数按长度校验的系统里实打实占位置。本站统计可见字符时会主动排除这类独立的零宽与格式字符,所以给出的数更接近肉眼所见;但平台那边未必这么宽容。稳妥做法是提交前先过一遍 富文本清理 去空行空格,把隐形字符清干净再数。

全角字母数字:不享受任何折扣

微博口径里 2 个半角字母算 1 字,但全角的 A、1 不在此列,仍然一个算一个。用输入法打出全角字符往往是无意的——中文输入法下按 Shift 切换不及时就会打出全角标点和字母。文案偏长又找不到原因时,检查一下是不是混进了全角半角不一致的字符,必要时用 全角半角转换 统一一遍。

数完字数之后:阅读时长与词频

字数只回答「有多长」,它不回答「读起来要多久」和「都在讲什么」。这两个问题需要另外两个口径,而且它们比字数本身更接近读者的真实感受。

阅读时长:把字数折算成分钟

阅读时长估算 按中文默认每分钟 300 字、英文默认每分钟 200 词折算,并把数字串按读音长度单独计——读「二零二六」确实比读一个英文单词慢。这些数值是经验区间不是定论,个体差异极大,页面上可以按自己的实际语速调整档位再算。它的典型用途是给文章标注「预计阅读 6 分钟」,或者估算一段演讲稿念完要多久。

需要提醒的是:默认口径下不含标点停顿以外的思考时间,技术文档、含大量数据的内容实际阅读时间通常更长,标注时留一点余量更诚实。

词频统计:看这段文字到底在重复什么

词频统计 按出现次数把词排序,用来发现自己的写作习惯很有效——同一个连接词在一屏里出现七次,读者会明显觉得啰嗦,但作者自己往往看不出来。做关键词布局时它也能直观告诉你核心词的实际密度,而不是靠感觉判断「提得够不够」。

几个页面之间的字数口径是统一的:阅读时长用的汉字数、英文词数与字数统计页完全同源,所以不会出现「这页说 800 字、那页说 760 字」的情况。发现两处数字不一致,通常是你在其中一处改动过口径选项。

常见问题

中文字数统计,标点符号算不算一个字
绝大多数中文平台按「可见字符」计数,标点算字、空格也算字,一个句号就占掉 1 格。但「汉字数」这个口径只数汉字本身,标点不计——所以论文查重、稿费结算里说的字数,和微博输入框倒计时里的字数天然不是一个数。本站的字数统计会把两种口径分开列出:可见字符数含标点空格,中文字数默认只数汉字,可以手动叠加全角标点再看一遍。
微博的字数限制是怎么算的,为什么英文能写更多
微博口径里 2 个半角英文字母或数字才算 1 个字,汉字仍然 1 个算 1 个,不足 1 个的按向上取整。所以 140 字的折叠线,用纯中文写只能写 140 个汉字,用纯英文写实际能写到 280 个字符。注意全角的 A、1 不享受这个折扣,仍然按 1 字计。
短信为什么有时候 70 字、有时候 160 字
取决于短信用哪套编码。纯英文数字和常见符号能用 GSM-7 编码,单条 160 个字符;一旦出现汉字、中文标点或不在 GSM 基本表里的字符,整条短信就要切到 UCS-2 编码,单条只剩 70 个字符。另外 GSM 扩展表里的字符(如 ^、{、}、[、]、~、|、€、换页符)虽然能用 GSM-7 发,但每个要占 2 个单位。超长会被拆成多条计费,拼接时每条还要再让出几个字符做拼接头。
SEO 标题和描述应该控制在多少字
搜索结果里截断看的是显示宽度不是字符数,常见做法是标题按 60、描述按 160 的显示宽度来控制,其中一个汉字占 2、一个英文字母或数字占 1。换算过来,纯中文标题大约 30 个汉字就到线了。这只是经验区间不是硬性规则,各搜索引擎的截断点会随设备宽度变化,关键信息尽量放前半段更稳。
一个 emoji 到底算几个字
看口径。按可见字符算,绝大多数 emoji 记 1;按 UTF-16 长度(也就是很多老系统和接口用的 str.length)算,emoji 通常记 2,因为它由代理对组成;按显示宽度算通常记 2。最极端的是带零宽连接符的组合 emoji,比如一家四口那个,它由多个基础 emoji 拼成,在 UTF-16 口径下可能记到 11。所以「文案在本地看着没超、提交时被判超长」十有八九是 emoji 造成的。
为什么复制过来的文字,字数比看到的多
大概率混进了不可见字符。从网页、聊天软件、PDF 里复制的文字常带零宽空格、字节序标记、软连字符这类看不见但占位置的字符,有些系统会把它们计入长度。本站的字数统计在算「可见字符」时会主动排除独立的零宽与格式字符,所以它给出的数会比 str.length 更接近你肉眼数的结果;想彻底清掉这些字符再统计,可以先过一遍富文本清理。
英文单词是按空格数的吗,it's 算一个还是两个
不是简单按空格切。本站把连续的拉丁字母算作一个单词,允许内部的撇号和连字符把它连起来,所以 it's 算 1 个词、well-known 也算 1 个词。数字串单独统计,3.14 和 1,000 各算 1 个,不会被拆成好几个。这样数出来的结果更接近英文写作里对「词数」的通常理解。
字数统计会把我的文稿上传吗
不会。本站的字数统计、限字检测、词频统计、阅读时长都在浏览器本地完成,文字不离开你的设备,也不写进任何服务器。未发表的稿件、内部文案、含个人信息的名单都可以直接粘进去;关掉页面内容即消失,刷新后不保留。

先想清楚这段文字要发到哪儿,再选口径——这一步比数字本身重要。日常写作用 在线字数统计 看多维度结果,要发平台前用 文案限字检测 选好平台预设核一遍,两个页面都在浏览器本地计算、内容不上传。

参考资料

延伸阅读

本文由「小鹿tools」整理,更新于 2026-08。如发现信息过期或有误,欢迎反馈。