什么是短信条数计算器?
这款工具能告诉你一条短信会占用多少个短信段(segment)、采用哪种编码(GSM-7 还是 UCS-2/Unicode),以及在新增一个分段之前还能输入多少个字符。运营商是按"段"计费的,因此一条看上去普通的"短信"一旦超出字符上限,实际就会按多条短信收费。
如何使用
把要发送的内容粘贴或输入到文本框,然后选择编码模式。自动识别会在所有字符都属于 GSM-7 字符集时选用 GSM-7,否则自动切换到 UCS-2。你也可以手动强制指定某种编码,直观对比两者在计费上的差异。
计算公式解析
单段短信在 GSM-7 编码下可容纳 160 个字符,UCS-2 编码下则为 70 个。一旦超过这个上限,每个分段都需要附带一段用于拼接的报头信息,可用容量随之降低为:GSM-7 每段 153 个字符、UCS-2 每段 67 个字符。分段数的计算方式为 ceil(字符长度 / 每段上限),即向上取整。
$$\text{Segments} = \begin{cases} 1 & L \le 160 \\[4pt] \left\lceil \dfrac{L}{153} \right\rceil & L > 160 \end{cases} \qquad L = \text{GSM-7 length of }\text{Message}$$
$$\text{Segments} = \begin{cases} 1 & L \le 70 \\[4pt] \left\lceil \dfrac{L}{67} \right\rceil & L > 70 \end{cases} \qquad L = \text{length of }\text{Message}$$
实例演算
一条 200 个字符的 GSM-7 短信超过了单段 160 的上限,因此需要拆分为多段:\( \lceil 200 / 153 \rceil = 2 \) 段。两段的总容量为 \( 2 \times 153 = 306 \) 个字符,因此在需要第三段之前,还剩下 \( 306 - 200 = 106 \) 个字符可用。
常见问题
为什么我的短信是按 153 而不是 160 拆分的? 多段短信会在每段中预留 7 个字节,用于存放拼接报头,让手机能够把各段重新组合成完整内容。
什么情况会触发 UCS-2 编码? 只要出现任何不属于 GSM-7 字符集的字符——比如常见的表情符号 emoji、弯引号,或者许多带重音的字母——整条短信就会切换为 UCS-2 编码,单段上限随之降为 70/67 个字符。中文等汉字字符同样属于 UCS-2 范围,因此发送中文短信通常以 70/67 字符为分段标准。
GSM-7 的扩展字符会多占用空间吗? 像 {、}、[、]、|、^、~、\ 和 € 这类字符,在 GSM-7 中每个都要占用两个计费单位,因为它们需要一个转义字符。