精确统计字符数、UTF-8/GBK字节数、中英文词数等。
| 字符 | UTF-8字节 | GBK字节 |
|---|---|---|
| ASCII字符 (a-z, 0-9) | 1 | 1 |
| 中文 (你) | 3 | 2 |
| Emoji (😀) | 4 | - |
字符串长度计算工具,用来数清一段文本到底有多少个字符、多少字节、多少词、多少行。写代码时经常遇到数据库字段限制,比如 MySQL 的 VARCHAR(255) 在 utf8mb4 下最多存 255 个字符,但一个汉字占 3 字节、emoji 占 4 字节,光看字数会踩坑。比如你给商品写标题,后台提示「不超过 60 字符」,你写了 58 个汉字觉得没问题,实际 UTF-8 字节数是 174,超出接口限制被截断。这个工具把字符数、UTF-8 字节数、GBK 字节数、中文字符数、英文单词数、行数一次性列出来,还能把多段文本分别统计后汇总,适合填表单、写接口文档、做数据校验时快速核对。
| 对比维度 | 本工具 | 手工/替代做法 |
|---|---|---|
| 统计耗时 | 粘贴即出结果,约 0.1 秒 | 手工数 500 字约 3-5 分钟,还容易数错 |
| 字节数精度 | 同时给出 UTF-8 和 GBK 两种字节数 | 用记事本另存看文件大小,只能看一种编码 |
| 多段批量 | 支持添加多段分别统计并汇总 | 每段单独复制到 Word 看字数,来回切换 |
| emoji 处理 | 按 Unicode 码点统计,标注代理对差异 | JS 的 length 会把 emoji 算成 2,容易误判 |
| 隐私 | 纯浏览器本地计算,文本不上传 | 在线接口类工具会把文本发到服务器 |
在 Unicode 码点层面,一个常用汉字算 1 个字符,比如「中」的码点是 U+4E2D。但字节数取决于编码:UTF-8 下常用汉字占 3 字节,GBK 下占 2 字节。所以「中文」两个字,字符数是 2,UTF-8 字节数是 6,GBK 字节数是 4。数据库字段限制如果写的是字节,就要按字节数判断。
emoji 情况复杂。像「😀」U+1F600 在 UTF-8 下占 4 字节,字符数按码点算 1 个;但 JavaScript 的 string.length 会把它算成 2,因为它是代理对。带肤色修饰符的 emoji 如「👍🏽」由两个码点组成,字符数 2、UTF-8 字节数 8。做长度校验时建议用码点或字节数,别直接用 JS 的 length。
ASCII 字符两者都是 1 字节。汉字 UTF-8 是 3 字节,GBK 是 2 字节。例如 100 个汉字,UTF-8 是 300 字节,GBK 是 200 字节,差 100 字节。GBK 覆盖的字符集比 UTF-8 小,生僻字和 emoji 在 GBK 里可能无法表示,会变成问号或占位符。
按空白字符(空格、制表符、换行)切分后计数。例如「hello world」是 2 个词,「你好 世界」也是 2 个词。中文没有空格时整段会被当成 1 个词,比如「今天天气不错」词数是 1。如果需要中文分词,得用专门的分词库,这个工具不做语义切分。
按换行符 \n 计数,最后一行如果没有换行符也会算 1 行。例如「a\nb\nc」是 3 行,「a\nb\nc\n」也是 3 行。Windows 的 \r\n 会先归一化处理,不会多算。空文本行数为 0,只有一个换行符的文本行数为 2。
统计基于 Unicode 码点和 UTF-8/GBK 编码规则,字符数按码点计,不等同于 JavaScript 的 string.length(代理对会差 1)。GBK 字节数对 GBK 字符集外的字符按替换符估算,仅供参考。所有计算在浏览器本地完成,文本不会上传到任何服务器,关掉页面即清空。