最后更新:
短信字符限制 - 短消息的上限与计费机制
短信 (SMS) 是最古老也最可靠的移动通信方式之一。尽管即时通讯应用已经普及,SMS 在身份验证、紧急通知和商务沟通中仍然不可替代。本文将解析 SMS 的字符限制、编码差异和计费机制。
SMS 的基本字符限制
| 编码 | 单条上限 | 长短信每段 | 适用场景 |
|---|---|---|---|
| GSM-7 | 160 字符 | 153 字符 | 英文、数字、基本符号 |
| UCS-2 (Unicode) | 70 字符 | 67 字符 | 中文、日文、Emoji |
140 字节的历史 - 为什么是 160 字符
技术背景更值得一看。SMS 的 140 字节这一框架,可以追溯到 1984 年 Friedhelm Hillebrand 与 Bernard Ghillebaert 提出的构想。他们设想把消息搭载在手机与基站之间交换控制信息的 SS7 (Signaling System No. 7) 信令通道上发送,而这条通道的有效载荷被限制为 140 字节 (1,120 比特),因此 SMS 的最大数据量也被这个框架束缚。至于 160 字符是否够用,当时是参照明信片与电报的文面长度作出的判断。
换个角度说,GSM-7 的 160 字符与 UCS-2 的 70 字符并不是两条互不相关的规则,而是同一个 140 字节用不同编码换算出来的两种说法。GSM-7 用 7 比特表示 1 个字符,1,120 ÷ 7 = 160 字符刚好装满;UCS-2 用 16 比特,同样的 1,120 比特只能装下 70 字符。把这一点放在心上,后面的分段规则与计费阶梯也都能从 140 字节这一个数字推导出来。
GSM-7 与 UCS-2 - 编码的工作原理
SMS 的编码会根据消息中包含的字符自动切换。理解这一机制是字数管理的第一步。
GSM-7 是用 7 比特表示拉丁字母、数字和基本符号的编码,由 GSM 03.38 规格定义的 128 个基本字符集,以及使用转义序列的扩展字符集构成。扩展字符 (例如 {、}、[、]、|、~、^、\、€) 会消耗 2 个字符 (14 比特),这一点需要注意。
另一方面,包含日文、中文、韩文、阿拉伯文等字符或表情符号的消息,会切换为与字符数与字节数的区别密切相关的 UCS-2 编码。UCS-2 用 16 比特表示 1 个字符,因此在同样 1,120 比特的框架内只能装下 70 字符 (1,120 ÷ 16 = 70)。重要的是,只要消息中包含 1 个需要 UCS-2 的字符,整条消息就会切换为 UCS-2。
| 编码 | 比特/字符 | 单条上限 | 长短信每段上限 | 支持字符 |
|---|---|---|---|---|
| GSM-7 | 7 比特 | 160 字符 | 153 字符 | 拉丁字母、数字、基本符号 |
| GSM-7 扩展 | 14 比特 | (消耗 2 个字符) | - | { } [ ] | ~ ^ \ € |
| UCS-2 | 16 比特 | 70 字符 | 67 字符 | 中文、日文、表情符号等 CJK 全体 |
长短信的分割机制
当短信超过单条上限时,会被自动分割为多条发送。每条分段短信需要 3 字符 (UCS-2) 或 7 字符 (GSM-7) 的头信息用于重组。因此,一条 71 字符的中文短信会被分割为 2 条 (67 + 4 字符),计费也按 2 条计算。
装不进 1 条的消息会作为长短信 (Concatenated SMS) 分割为多个分段。每个分段的开头都会附加称为 UDH (User Data Header) 的 6 字节连接信息,因此可用于正文的空间会减少。
UDH 中包含 3 项信息:参考编号 (属于哪条消息的一部分)、分段总数、当前分段编号。由于要扣掉这 6 字节 (48 比特),GSM-7 下每个分段的实际上限为 (1,120 - 48) ÷ 7 = 153 字符,UCS-2 下为 (1,120 - 48) ÷ 16 = 67 字符。
短信的字数限制与计费体系
下表是 NTT DOCOMO 公开的日本国内短信发送资费 (2026 年 8 月时点),金额为含税价,接收一方不产生费用。可以看到费用并不是按字符逐个累加,而是随分段数呈阶梯式上升。
| 条件 | 字数上限 | 分段数 | 发送费用 (含税、NTT DOCOMO) |
|---|---|---|---|
| 普通短信 (日文) | 70 字符 | 1 条 | 3.3 日元 |
| 71〜134 字符 (日文) | 134 字符 | 2 条 | 6.6 日元 |
| 135〜201 字符 (日文) | 201 字符 | 3 条 | 9.9 日元 |
| 长短信 (日文) | 最多 670 字符 | 4〜10 条 | 13.2〜33 日元 |
| 普通短信 (仅英文数字) | 160 字符 | 1 条 | 3.3 日元 |
| 长短信 (仅英文数字) | 最多 1,530 字符 | 2〜10 条 | 6.6〜33 日元 |
值得注意的是,发送 71 字符的日文消息时,仅仅超出 1 个字符费用就会翻倍。长短信的每个分段都单独计费,因此字数管理直接关系到成本。资费与阶梯的划分方式会随运营商和资费方案而变化,实际发送前请以自己签约的运营商官方页面为准。
各运营商的短信限制
| 项目 | 各运营商共通的部分 | 需要在官方页面确认的部分 |
|---|---|---|
| 单条的字符上限 | 由编码决定 (UCS-2 为 70 字符、GSM-7 为 160 字符),不因运营商而变 | 几乎不需要逐家确认 |
| 长短信 (分段拼接) | 超出单条上限时自动分成多段发送 | 可拼接的最大分段数,以及接收终端会不会拆开显示 |
| 费用 | 按分段数呈阶梯上升,而不是按字符逐个累加 | 每一段的金额、免费额度、企业发送渠道的单价 |
换句话说,字符上限这一层由编码规格决定,各家运营商没有差别;真正因运营商而异的是金额、最大分段数和免费额度这些商务条件。这些条件里也有一部分并未写在官方页面上 (2026 年 8 月时点),需要向运营商或短信发送服务商直接确认。下面以能够查到公开值的 NTT DOCOMO 为例。
| 项目 (NTT DOCOMO 公开值、2026 年 8 月时点) | 公开的数值 | 与 140 字节的对应关系 |
|---|---|---|
| 长短信的最大字数 (日文、全角) | 670 字符 | 67 字符 × 10 段 |
| 长短信的最大字数 (半角英数) | 1,530 字符 | 153 字符 × 10 段 |
| 可拼接的最大分段数 | 10 段 | 阶梯计费也在第 10 段封顶 |
| 经卫星通信发送时 | 全角 70 字符 (不支持长短信) | 只剩下 1 段的容量 |
把这张表和前面的分段公式放在一起看就会发现,670 与 1,530 这两个数字并不是运营商单独设定的上限,而是每段 67 字符、153 字符乘以 10 段的结果。也就是说,上限不是由签约的资费方案决定,而是由消息走哪条通路决定的。同一个号码,走地面网络能发 670 字符,走卫星通信就只剩 70 字符。
根据接收方的终端和系统版本,长短信有时会被拆开显示。特别是较旧的终端存在不支持长短信的情况,因此重要的消息装进 1 条 (70 字符以内) 最为稳妥。
国际短信的字数限制会因目的地国家、当地运营商以及中途经过的短信服务商而不同,可拼接的分段数也不一定和国内相同。由于很难事先查全所有目的地的条件,比较现实的做法是在正式发送前,用实际的发送通路向目的地国家的号码试发一条长文,确认它是被拼接成一条显示,还是被拆成多条到达。
短信容易被读到的理由 - 和字数限制的关系
| 短信的性质 | 它对写法提出的要求 |
|---|---|
| 消息直接显示在锁屏与通知栏上 | 开头一两行往往就是接收方看到的全部,要点必须放在最前面 |
| 没有标题栏,正文本身就是标题 | 不能靠标题吸引点开,第一句就要说清是什么事 |
| 单条 70 字符 (中文) 的硬性上限 | 装不下寒暄和铺垫,只剩下用件与下一步动作 |
| 超出上限费用就会翻倍 | 成本压力反过来成为把文案压短的约束力 |
短信之所以被认为容易读到,与其说是渠道本身有什么魔力,不如说是这些性质叠加的结果。70 字符这个上限乍看是限制,实际上迫使发送方只写用件和下一步动作,写出来的消息因此比长篇邮件更容易被读完。
反过来说,一旦把这个约束用坏 (例如塞满促销词句、把重要信息放在第 2 段之后),短信的优势也会随之消失。把字数限制当作编辑纪律来用,是短信文案的基本功。
商务短信的最佳实践
商务短信 (A2P SMS) 的价值不在篇幅,而在于它落在接收方最容易看到的位置。中文正文控制在 50〜60 字符左右、只放一个明确的 CTA、并写清退订方式,是较为稳妥的编辑目标。
商务短信的运用与 A2P 短信
用于商务的短信被称为 A2P (Application-to-Person) 短信。预约确认、配送通知、验证码、营销消息等是它的代表性用途。
发送 A2P 短信时,发送方号码的类型会影响到达率。在日本国内,使用运营商提供的公共号码 (短代码) 或国内号码,可以降低被垃圾短信过滤器拦截的风险。从海外号码发送时,被运营商过滤拦截的概率会明显升高。
营销短信的字数,日文放在 40〜60 字符这个区间通常比较好把控。按问候 (10 字符左右)、正文 (20〜35 字符)、CTA 与链接 (10〜15 字符) 来分配,合计恰好落在 40〜60 字符,既装得进 1 条,也能把必要信息说完。需要说明的是,这个配比只是编辑上的参考,并没有规格层面的依据。由于超过 70 字符费用就会翻倍,编排时不要贴着上限走,先确认变量替换 (例如收件人姓名) 在最长的情况下会占掉多少字,再决定正文留多少余量。
表情符号与短信 - 编码切换的陷阱
在短信中使用表情符号时最需要注意的是编码的自动切换。本来可以用 GSM-7 发送的纯拉丁字母消息,只要加入 1 个表情符号,整条消息就会切换为 UCS-2,上限从 160 字符骤减到 70 字符。
此外,表情符号的 Unicode 计数也需要注意。基本的表情符号 (例如 😀) 在 UCS-2 下消耗 2 个字符;带肤色修饰符的 👍🏽 是手的部分与肤色修饰符各 2 个,合计 4 个字符;由 ZWJ 连接的家庭表情符号 👨👩👧👦 则是 4 个人物各 2 个再加 3 个 ZWJ,合计 11 个字符。在只有 70 字符的框架里,这样一个表情符号就会吃掉近六分之一的额度,因此商务短信中不用表情符号是最安全的选择。
无意间切换为 UCS-2 的情形,多半来自肉眼看不出的字符。典型的有右单引号 U+2019 (’)、全角空格 U+3000、省略号 U+2026 (…) 和波浪号 U+301C (〜)。反过来,ASCII 的直立撇号 U+0027 和连字符 U+002D 都收录在 GSM-7 基本字符集里,并不会引发切换,却常被误当成元凶。货币符号的情况则不对称:¥ 和 £ 在基本字符集中各占 1 个字符,而 € 属于扩展字符集,要占 2 个字符。从文本编辑器或邮件正文复制粘贴过来的文字最容易混入这些隐藏的 Unicode 字符,因此发送前的检查不可省略。
RCS - SMS 的下一代标准
RCS (Rich Communication Services) 是 SMS 的后继标准,支持富媒体内容、已读回执和群聊。Google Messages 已支持 RCS,Apple 也在 iOS 18 中加入了 RCS 支持。RCS 消息可写的长度远超传统 SMS,不过具体上限取决于所使用的服务,并不像 SMS 的 140 字节那样有一个统一的规格数字。
| 项目 | SMS | RCS |
|---|---|---|
| 字数限制 | 160 字符 (GSM-7) / 70 字符 (UCS-2) | 比 SMS 长得多 (随服务而异) |
| 媒体 | 仅文本 | 图片、视频、音频、文件 |
| 交互 | 无 | 按钮、轮播卡片、快捷回复 |
| 已读确认 | 无 | 有 |
| 通信方式 | SS7 信令 | 基于 IP (数据通信) |
| 送达的条件 | 只要有电话号码,就能送到终端自带的短信应用 | 需要收发双方的终端与运营商都支持 RCS |
RCS 在功能上大幅超越 SMS,但能否用上它取决于收发双方的环境 (2026 年 8 月时点)。在日本,符合 RCS 的服务 "+Message" 由 NTT DOCOMO、KDDI、SoftBank 三家运营商自 2018 年起共同提供。实务上更关键的一点是,发送方在按下发送键之前,无法确认对方此刻是否处于可以接收 RCS 的状态。因此对必须确保送达的消息,基准线仍然要放在 SMS 一侧,把内容压进 70 字符的框架里来设计。
SMS 验证码的安全性
SMS 验证码 (OTP) 广泛用于双因素认证,但存在 SIM 卡交换攻击和 SS7 协议漏洞的风险。NIST SP 800-63B (第 4 版) 把经公共电话网发送的一次性密码归为受限的认证方式,在条件允许时更推荐 TOTP 应用或 FIDO2 这类不依赖电话号码的手段。就文案而言,验证码短信只放验证码、有效期和一句提醒即可,把长度压在 30 字符左右,可读性最好。
短信验证码 (OTP) 的设计
双因素认证中使用的短信验证码 (OTP: One-Time Password) 的设计也与字数限制密切相关。验证码短信由验证码本体、说明文字和安全提示构成,需要在有限的字数内不多不少地传达必要信息。
验证码的位数取决于安全性与便利性的平衡。4 位验证码只有 10,000 种组合,对暴力破解的抵抗力偏低,6 位则有 1,000,000 种组合。NIST SP 800-63B (第 4 版) 要求经另一条通路发送的认证秘密至少为 10 进制 6 位 (SHALL);并且当秘密的强度不足 64 比特时,验证方还必须限制尝试次数 (同样是 SHALL)。换句话说,只加长位数并不算满足要求,需要与次数限制配套。位数做到 8 位以上则会增加输入错误,反而损害使用体验。
短信验证码的示例 (日文 35 字符):"验证码:123456 有效期 5 分钟 请勿告知他人"。像这样把验证码、有效期和提醒装进 70 字符以内,就能按 1 条的费用发送。
专业的短信运用技巧
下面介绍有效运用短信的实用技巧。
- 发送前的编码检查:在投放推广活动前,把消息交给 GSM-7 校验工具,确认没有隐藏的 Unicode 字符。智能引号或全角空格只要混入 1 个字符,就会切换为 UCS-2,使分段数翻倍。
- 字数预算的设计:营销短信可以按问候 (10 字符)、正文 (25〜32 字符)、CTA (10〜15 字符)、退订说明 (10 字符) 这样为每个部分分配字数。这样合计落在 55〜67 字符,即便计入长短信的头信息消耗 (每段 67 字符),也能确保用 1 条送达。分配比例本身没有规格层面的依据,重点在于合计不要超过 67 字符这条线。
- 个性化字段的字数考量:像
{first_name}这样的动态字段,应按最长的姓名 (15 字符左右) 来编排预算。姓名较短的接收者会留有余量,但可以避免因姓名过长而导致分段的风险。 - 发送时段的设计:短信会直接点亮锁屏并发出提示音,因此深夜与清晨的发送应当避免。选择接收方看到之后能立刻采取下一步动作的时段,比追求某个固定钟点更实际。面向多个地区发送时,请按接收方所在时区分批投递,不要用发送方的当地时间统一发出。
- 短链接的运用:长 URL 会大量消耗字数。使用短链接服务可以压缩到 20〜25 字符,省下的额度可以用在正文上。不过在部分运营商那里短链接可能被垃圾过滤器拦截,因此理想做法是使用品牌域名的短链接。
总结
SMS 的字符限制源自 1984 年构想阶段就定下的 140 字节这一物理约束,如今仍以 GSM-7 的 160 字符和 UCS-2 的 70 字符这两个上限发挥作用。中文短信单条上限 70 字符,商务短信留出余量、把正文控制在 50〜60 字符左右,是比较好把控的编辑目标。编码的自动切换、长短信的头信息消耗、表情符号带来的字数膨胀等,仅看表面字数无法掌握的陷阱有很多。发送前使用字符计数器确认消息字数,在成本与到达率两方面实现最优的短信运用。
常见问题
- SMS 最多可以发送多少字?
- 日本主要运营商支持全角 670 字符 (半角 1,530 字符)。超过 70 个字符会分段发送,费用增加。
- SMS 每条的费用是多少?
- 全角 70 字符以内每条约 3-4 日元。字数增加会分段发送,最高每条约 30 日元。