跳转到正文
OmniChannels.ai

短信字数限制:GSM-7、Unicode、阿拉伯语与emoji

详解短信字数限制:GSM-7与UCS-2的区别、单条160和70个字符、拼接后每段153和67个字符,以及阿拉伯语和emoji为什么会推高成本,附利雅得购物中心的计算示例,教出海企业写出刚好不超段数的短信,省下不必要的费用。

更新于 8 分钟阅读

作者: OmniChannels.ai Editorial Team · 审阅: BroadNet Messaging Solutions Team

短信与验证码

简短回答

一条短信可承载140字节的文本。在用于基本拉丁文本的GSM 7-bit字符集下,这相当于160个字符;而阿拉伯语、emoji和许多带重音的字母需要使用Unicode(UCS-2),此时只有70个字符。更长的消息会被拆分为每段153个GSM-7字符或67个Unicode字符的分段,每个分段都要计费。只要出现一个GSM之外的字符,整条消息就会切换为Unicode。

本页内容
  1. 一条短信能容纳多少个字符?
  2. GSM-7和UCS-2有什么区别?
  3. 为什么长短信每段只有153或67个字符?
  4. 为什么阿拉伯语和emoji会改变成本?
  5. 如何写出长度刚好的短信?
  6. 常见错误与局限
  7. OmniChannels.ai 如何提供帮助

要点速览

  • 按照3GPP TS 23.040和TS 23.038的定义,一条短信承载140个八位字节的用户数据:160个GSM-7字符或70个UCS-2字符。
  • 拼接的长短信,每个部分都要用一个头部占去空间,因此每段只剩153个GSM-7字符或67个UCS-2字符。
  • 单个阿拉伯字母、emoji、弯引号或不受支持的重音符号,都会迫使整条消息改用UCS-2编码。
  • €、[、]、{、}、~、\和|等GSM-7扩展字符需要转义码,因此每个按两个字符计算。
  • 由于UCS-2,阿拉伯语短信每个词的成本高于英语,所以为控制长度而精简文案,会直接影响营销活动的成本。

本指南面向用英语、阿拉伯语或其他语言撰写短信,并希望控制成本和送达率的营销人员、CRM团队和开发者。您将了解短信编码的工作原理、每个分段能容纳多少字符,以及如何写出分段数可预期的短信。

一条短信能容纳多少个字符?

一条短信承载140个八位字节(字节)的用户数据。它能容纳多少个字符取决于编码,而编码由服务商根据您使用的字符自动选择。

规则来自两份3GPP规范:定义短信消息结构的TS 23.040,以及定义字符集的TS 23.038。

编码 每字符位数 单条短信 拆分后每段 用途
GSM 7-bit默认字符集 7 160个字符 153个字符 基本拉丁字母、数字、常用标点、部分带重音的字母
UCS-2(16位Unicode) 16 70个字符 67个字符 阿拉伯语、emoji、中文、大多数带重音和特殊的字符
8位数据 8 140字节 134字节 二进制数据,而非普通文本

算术很简单:140个八位字节 × 8位 ÷ 7位 = 160个GSM-7字符,140 ÷ 2字节 = 70个UCS-2字符。

GSM-7和UCS-2有什么区别?

GSM-7是为短信设计的紧凑7位字符集。UCS-2是16位的Unicode编码,几乎可以表示任何文字,但每个字符占用的空间超过前者的两倍。

GSM-7涵盖A–Z、a–z、0–9、常用标点、一组符号(如@、£、$、%和&),以及有限的带重音字母,包括é、è、ü、ñ和à。它不包含法语、西班牙语或葡萄牙语中使用的许多带重音字母,如á、ç(小写)、ê或õ,更不包含任何阿拉伯文、西里尔文或亚洲文字。

扩展表

一些常见字符位于GSM-7扩展表中,需要先用转义码,因此每个按两个字符计算:€ [ ] { } ~ \ | ^ 以及换页符。包含多个欧元符号或括号的消息,容量会迅速缩水。

各国语言表

TS 23.038还为土耳其语、西班牙语、葡萄牙语和若干印度语言等定义了各国语言移位表,使7位模式下可以容纳更多字符。支持情况取决于网络、服务商和手机,所以在没有对目标运营商进行测试之前,请不要依赖它们。

为什么长短信每段只有153或67个字符?

当消息超过单条短信时,它会被拆分成多个分段,每个分段都带有用户数据头(UDH),告诉手机如何重新组装。常见的头部占6个八位字节,留给文本的是134个八位字节。

  • 在GSM-7下,134个八位字节可容纳153个字符。
  • 在UCS-2下,134个八位字节可容纳67个字符。

手机显示为一条消息,但您的服务商和运营商会统计每个分段,并通常按分段计费。

分段数 GSM-7最多字符数 UCS-2最多字符数
1 160 70
2 306 134
3 459 201
4 612 268
5 765 335

有两个实际细节会改变确切的数量。服务商会避免把一个由两个字符组成的扩展序列或一个emoji拆在两个分段之间,所以一个分段可能比理论最大值少容纳一个字符。另外,许多服务商会限制每条消息的分段数量,因此特别长的文本可能被拒绝或被截断;请查看服务商的限制。

为什么阿拉伯语和emoji会改变成本?

任何GSM-7之外的字符,都会迫使整条消息改用UCS-2。这会把单条上限从160降到70个字符,把每段上限从153降到67个字符。

  • 阿拉伯语文本始终使用UCS-2。一条100个字符的阿拉伯语消息需要两个分段;同样长度的英语消息只需一个。
  • emoji在GSM-7之外。多数emoji位于Unicode基本多文种平面之外,在UTF-16中以代理对(两个16位单元)表示,所以它们会占用70个可用位置中的两个。旗帜或不同肤色版本等组合型emoji占用更多。
  • 英语文本中的**隐藏元凶:**弯引号(’ “ ”)、连字符之外的en dash和em dash(– —)、省略号字符(…)和不换行空格,它们常常是从文字处理软件或设计工具中粘贴进来的。其中任何一个都会让消息切换为UCS-2。

实战示例:利雅得一家购物中心的营销活动

“Najm Mall”(虚构)计划向200,000名客户发送一条英语和阿拉伯语的周末短信。我们统计了每个草稿的字符数。

草稿 字符数 编码 分段数
使用普通连字符、无emoji的英语 122 GSM-7 1
同样的英语,加了两个en dash和一个emoji 125个单元 UCS-2 2
阿拉伯语,初稿 153 UCS-2 3
阿拉伯语,编辑后 101 UCS-2 2

英语版本为:“Najm Mall: Weekend sale, up to 30% off home & kitchen. Fri-Sat 10am-10pm. Show this SMS at the till. Reply STOP to opt out”。加上一个派对emoji和排版用的破折号,让英语受众的分段数翻了一倍。把阿拉伯语文案从三段压缩到两段,在优惠内容和截止时间不变的情况下,使该受众的成本降低了三分之一。

如何写出长度刚好的短信?

先确定分段预算,再按预算来写。每次活动都可以参照以下检查清单:

  1. **设定目标:**验证码和告警为一个分段;营销短信为一到两个分段。
  2. 在纯文本编辑器里撰写,并把排版用的引号和破折号换成普通的。
  3. 除非您已认定多一个分段是值得的,否则不要在英语消息中使用emoji。
  4. 使用能在发送前检测编码的分段计数器,并预览最终文本,其中的个性化字段按可能的最大长度填充。
  5. **为变量留出余量:**较长的客户姓名或产品名称可能把消息推到下一个分段。
  6. **对于阿拉伯语,**去掉每个都算作字符的元音符号(tashkeel)和装饰性拉长字符(tatweel);优先使用简短的措辞;并使用受众读起来自然的缩写。
  7. 使用您自己的品牌域名缩短链接,而不是粘贴很长的跟踪链接。
  8. 在各语言的手机上测试,确认显示效果和分段数。

对于验证码,请把验证码放在最前面,并让消息保持在一个分段内;参见我们的验证码指南。关于活动规划,请参阅群发短信最佳实践。

常见错误与局限

  • **只数字符,不看编码。**一条90个字符的消息,可能是一个分段,也可能是两个。
  • **随意混用语言。**英语消息中只要有一个阿拉伯语单词,整条消息就变成Unicode。
  • **忽视扩展表。**欧元价格和括号在GSM-7中按双倍计算。
  • **忘记个性化内容的长度。**请用数据中最长的值来测试。
  • **以为每家服务商的计数方式都相同。**拆分规则和最大分段数各不相同;请向您的服务商确认。
  • **本指南的局限:**手机和网络在边界情况下偶尔处理方式不同,尤其是各国语言表和复杂的emoji。关键消息请在您实际发送的运营商网络上测试。

OmniChannels.ai 如何提供帮助

OmniChannels.ai在短信活动和其他渠道中支持阿拉伯语和英语,提供发送前的消息预览、Excel或CSV上传、定时发送和去重。带汇总与高级视图、筛选和CSV导出的送达报告,帮助您核对发送了什么、送达了什么。短信通过BroadNet Technologies送达,这是一家拥有短信运营商直连网络的电信消息公司,计费采用预付费钱包。了解更多关于开展多渠道营销活动的信息。

常见问题

一条短信有多少个字符?

一条短信承载140个八位字节的用户数据。使用GSM 7-bit默认字符集时,相当于160个字符;使用UCS-2 Unicode编码(阿拉伯语、中文、emoji和GSM字符集之外的字符都需要它)时,相当于70个字符。如果消息更长,就会作为多个相互关联的分段发送,通常按分段计费。

为什么长短信每段是153个字符而不是160个?

消息被拆分后,每个部分都带有一个用户数据头,告诉手机如何重新组装这些片段。常见的头部占6个八位字节,因此每段只剩153个GSM-7字符或67个UCS-2字符的空间。手机会把这些部分显示为一条消息,但网络和您的服务商会分别计数。

一条阿拉伯语短信能有多少个字符?

阿拉伯语不在GSM 7-bit字符集中,所以阿拉伯语短信使用UCS-2编码:单条为70个字符,消息更长时每段为67个。阿拉伯语消息中的空格、标点和西方数字也计入这个Unicode限制,因为整条消息只使用一种编码。

emoji会让短信更贵吗?

通常会。emoji不在GSM字符集中,所以一个emoji就会让整条消息切换为Unicode,使单条上限从160降到70个字符。多数emoji还占用两个16位单元,旗帜等部分组合型emoji占用更多,因此它们会在Unicode限制内消耗额外的空间。

为了省钱,可以把阿拉伯语短信改用GSM-7发送吗?

只能用拉丁字母书写阿拉伯语,有时称为Arabizi。这样可以适配GSM-7,但许多客户觉得更难读,对品牌而言也可能显得不够可信。更好的省钱办法是紧凑地编辑阿拉伯语文案,去掉元音符号和装饰性的拉长字符,并以固定的分段数为目标。

资料来源

  1. 3GPP TS 23.038:字母表和特定语言信息
  2. 3GPP TS 23.040:短消息服务(SMS)技术实现
  3. UTF-8、UTF-16、UTF-32与BOM常见问题 — Unicode联盟