字符计数器

实时统计含空格和不含空格的字符数、字节大小,以及与推文、meta 描述等常见平台限制的接近程度。

字符数(含空格)0
字符数(不含空格)0
字节大小(UTF-8)0

常见限制

工作原理

每次按键时,页面都会重新计算三个数值。字符数是 JavaScript 的 .length,统计的是 UTF-16 代码单元数。不含空格的计数会先用正则表达式去除所有空白(空格、制表符、换行符)。字节大小则将你的文本传入浏览器的 TextEncoder API,得到该文本在文件、数据库列或 HTTP 请求体中实际占用的 UTF-8 字节数。平台限制列表只是用每个限制值做减法,一旦超出就切换为"超限"样式。

这些数值之间的差异正是容易踩坑的地方。一个笑脸表情符号在视觉上是一个符号,但在这里(以及许多平台上)算作 2 个 UTF-16 代码单元,也就是 2 个字符,并占用 4 个 UTF-8 字节。就短信而言,160 字符的限制是假设消息始终使用旧的 GSM-7 字符集:只要包含一个表情符号或弯引号,运营商就会悄悄把整条消息切换为 UCS-2 编码,把单段限制降到 70 个字符。如果修改了一个字符,短信突然被拆成两段,原因就在这里。

统计完全在本页面的 JavaScript 中完成。打字时打开开发者工具的网络面板:你会看到零请求,因为你的文本从未离开浏览器。