← 全部指南

文本处理 / 使用指南

字数、字符数和字节数,为什么对不上?

中文、英文和 emoji 混排时,先选对计量方式,再判断是否超限。

打开 文本统计 ↗

同一段文字,可以有不同的长度

写文章时,我们常说“这段有多少字”;提交表单时,系统却可能限制字符或字节。它们衡量的东西不同。比如“AI你好”有四个 Unicode 码点;按 UTF-8 编码,两个英文字母各占一个字节,两个汉字各占三个字节,总共八个字节。

如果界面显示剩余字数,但保存时仍提示内容太长,可能是前后端使用了不同口径。先查看产品规则,确认限制的是可见字符、UTF-16 长度、UTF-8 字节,还是某一种分词结果。

本工具的五种统计口径

“可见字符单元”使用浏览器的 Intl.Segmenter 按字素簇分段。它把通常被人看成一个字符的组合尽量算作一个,例如带组合音标的字母和部分连在一起的 emoji。这个计数包含空格与换行;“不含空白”会去掉仅由空白构成的单元。

“Unicode 码点”按字符串的码点迭代计数;“UTF-8 字节”使用 TextEncoder 得到实际编码长度;“非空行”按换行分隔,再排除只有空格或制表符的行。不同操作系统的换行符可能不同,因此本工具把 CRLF、CR 和 LF 都视为换行。

用三个例子检查你的需求

例一:把“AI你好”粘贴进去,可见字符和码点都是 4,UTF-8 字节为 8。若接口最多接受 6 个字节,这段文字仍然超限;删除空格并不能解决这个例子。

例二:输入一行文字,换行后再输入第二行,中间插入一个空白行。非空行应为 2,而字符统计仍然包含换行。你可以据此检查导出文本是否意外多了空行。

例三:复制一个由多个成员组成的家庭 emoji。视觉上它可能是一枚图标,但内部含多个码点和连接符。可见字符数与码点数不同是正常现象,不代表数据损坏。不同浏览器使用的 Unicode 数据版本也可能影响少数新符号的分段。

字符数不能直接当作 token 数

语言模型通常先把文本编码为 token。不同模型和编码器会把同一段中英文文本切成不同数量的 token,标点、空格和代码也会影响结果。因此,本工具不估算模型 token 数,也不据此估计费用或剩余上下文。

如果你要检查模型输入是否超限,应使用该模型对应的分词器或接口返回的用量。字符统计适合检查表单长度和文本规模,不适合代替账单或上下文窗口验证。

整理文本时,保留原文

多一个空格有时是排版问题,有时却是代码、诗歌或表格的内容。本工具只统计,不自动去空白、改换行或清洗文字。可以先复制原文到安全位置,再在你熟悉的编辑器中修改,回到工具复查结果。

统计在输入后自动更新,输入仅存在于当前页面内存中,不会上传或写入本工具的本地存储。为了避免浏览器卡顿,单次输入限制为 200000 个 UTF-16 单元;超过这一规模的文件适合用本地脚本处理。

标准与参考

本文围绕本站工具的实际行为编写。发现说明与结果不一致,可通过联系页面反馈,并附上不含敏感信息的最小示例。

继续阅读

字数、字符数和字节数,为什么对不上? | 与 AI 共舞