字数统计工具

把一段中英混排的文本粘进来,立刻得到字符数、汉字数、英文词数、行数和 UTF-8 字节数。默认样本是一句中文加一个英文单词,打开就能看到统计结果。

默认已填示例;若你清空后想恢复,点「载入示例」。统计在本地实时完成。
字符数0
汉字数0
英文词数0
行数0
UTF-8 字节0

提示:文本框是多行输入,按 Ctrl/Cmd + Enter 触发统计;也可直接输入,页面会实时刷新上方五张卡片。

统计口径对照(同一段文本里不同成分怎么算)

成分计入字符数计入汉字数计入英文词字节(UTF-8)
汉字(你、中、国)是是否每字 3
中文标点(,。!?、「」)是勾选后算否每符 3
英文字母(Hello)是否是(整词)每字母 1
连字符单词(well-known)是否算 1 个词11
数字串 12345是否否5
半角空格去空白时剔除否分词边界1
换行符去空白时剔除否否(增行数)1 或 2
Tab 制表符去空白时剔除否否1
全角空格( )是(去空白剔除)否否3
Emoji(😀)是(1 码点)否否4
全角字母(ABC)是否否每字 3
混合串「你好hello」是(共 7 字符)是(1 字)是(1 词)10
纯英文句子是否词数 = 空格数 + 1每字母 1
空文本0000

口径表给出的是「同一段文本里不同成分怎么被计数」的规则,不是样本的统计结果;样本实算请看上方卡片。

使用方法

  1. 在文本框粘贴或输入内容(默认已填一段中英混排样本,含中文、英文、数字)。
  2. 勾选「去空白」可剔除空格、换行、Tab 再统计字符数;勾选「汉字数含中文标点」会把逗号句号等也算进汉字数。
  3. 点「统计字数」或按 Ctrl/Cmd + Enter,也可边输入边看五张卡片实时变化。
  4. 结果区用 role="alert" 标出,给出「字符数 / 汉字数 / 英文词数 / 行数 / UTF-8 字节」一行快照,便于读屏播报。
  5. 点「复制结果」把快照存到剪贴板;「导出口径表 CSV」把 14 行统计口径下载成带 BOM 的表格,Excel 不乱码。

这个工具能解决什么问题

一是让「多少字」有统一口径。同一段话,稿费按「汉字数」算、论文按「字符数(计空格)」算、英文投稿按「词数(word count)」算、短信按「字节」算——不说明口径,数字能差好几倍。字数统计工具把五种口径一次列出,你挑自己要的那个。

二是中英混排不再各算各的。一句「你好hello」里,中文按「字」、英文按「词」,若都当字符数数会丢掉语言结构信息;若都当词数数又会把中文一个字算一词。本工具分开计汉字数与英文词数,混排时最贴近真实写作量。

三是提前发现超字节限制。很多平台(短信、表单、数据库字段)限制的是字节而非字符。中文在 UTF-8 下每字 3 字节,一段 1000 汉字的文本实际占 3000 字节,远超「1000 字符」的直觉。本工具直接报 UTF-8 字节数,避免提交时才被截断。

本页不做这些事:不判断词性、不做分词摘要、不翻译;也不对比两篇文本的相似度。它只回答「这段文本在五种口径下各是多少」。

计算原理:中文按字、英文按词,以及 UTF-8 字节怎么来的

字符数 = 去空白后的字符串长度。JavaScript 里 text.length 按 UTF-16 码元计,对 BMP 内字符(绝大多数汉字、英文、标点)恰好一一对应;不勾去空白时就是原串长度,勾选后先 text.replace(/\s+/g,'') 再取长度。

汉字数用 Unicode 区间判定。本页用正则 /[\u4e00-\u9fff]/g 匹配中日韩统一表意文字基本区,逐字符计数。这样「你」「中」「国」各算 1;中文标点(,。!)不在此区间,默认不计入汉字数,除非勾选「汉字数含中文标点」。

英文词数按「字母序列」切分。用 /[A-Za-z]+/g 抽取连续字母段,每段算一个词:Hello 是 1 词,well-known 中间是连字符非字母,仍被算作 1 词(因为整体是连续匹配,连字符打断后实际算 2 段:well 和 known → 2 词;本页如实如此计数)。数字、标点不计入英文词。

行数 = 换行次数 + 1。空文本记 0 行;非空文本按 text.split('\n').length 得行数。去空白开启时换行被剔除,行数相应变为 1(只要还有内容)。

UTF-8 字节数用编码长度。中文每字占 3 字节、英文每字母 1 字节、Emoji 占 4 字节,这是 UTF-8 变长编码决定的。本页用 TextEncoder 实际编码后取 .length,比手算更准,也正确处理 Emoji 与生僻字。

完整示例(默认输入实测)

默认样本:「你好,这是一段字数统计工具的示例文本。Hello world, this is a demo. 数字 12345 也在计数范围内。」逐项核对(去空白开启、汉字不含标点):

这组数字和上方卡片、结果区快照完全一致;清空文本框再粘贴你自己的内容,五张卡片会立即重算,口径表里的规则不变。

输入范围与对照表

口径表是「规则说明」而非「样本结果」,所以它与上方卡片是两个独立信息源:卡片告诉你这段具体多少,口径表告诉你为什么这么算。

边界与精度说明

常见问题

为什么字符数和汉字数对不上?

因为它们是两种口径。字符数包含英文、数字、标点、空格;汉字数只数中日韩表意文字。一段「你好hello」字符数是 7(你/好/h/e/l/l/o + 无空格),汉字数只有 1。两者本就不该相等,差异正是混排文本的正常表现。

英文词数为什么比我以为的少?

本页只把连续字母段当词,数字、标点、连字符都不算词。所以「12345」是 0 词,「well-known」被连字符打断算 2 词(well 与 known)。若你期望把连字符视为同一词,需要在口径上另行约定,本页如实按字母段计数。

去空白后字符数变少,正常吗?

正常。去空白会剔除所有空格、Tab、换行,这些原本都算字符数。一段有很多空行的文本,去空白后字符数会明显下降,但汉字数和英文词数不变。两个口径同时存在,方便你按用途选。

汉字数含标点勾上后多了几个,是哪来的?

多出来的就是中文逗号、句号、叹号、问号、书名号等。它们默认不在汉字区间(\u4e00-\u9fff)内,所以不计入;勾选后并入汉字数,适合「按中文字符含标点计稿费」的合同场景。

字节数和字符数为什么不一样?

因为 UTF-8 是变长编码:英文 1 字节、中文 3 字节、Emoji 4 字节。同样 100 个字符,全英文占 100 字节、全中文占 300 字节。很多平台限制的是字节而非字符,所以本页单独报字节数,避免你提交时才发现超限。

换行符算几行、几字节?

行数上,一个换行把文本分成两行(行数 = 换行数 + 1);字节上,Unix 换行 1 字节、Windows 换行 2 字节。本页按文本里实际出现的字符统计,从 Windows 拷来的文本会带 \r,字节稍多,属预期。

超大文本会卡吗?

一般不会。正则匹配和字符串长度都是线性扫描,数万字瞬间完成;十万字以上会有可感知的微小延迟,但不会卡死或报错。本页不限制输入长度。

统计结果会被上传吗?

不会。所有统计只在你当前浏览器里完成,页面不发起任何网络请求,也不写 Cookie 或 localStorage。你在开发者工具的 Network 面板里粘贴再统计几次,面板始终是空的。

相关工具