UCS-2

短信用于大多数 emoji 和非拉丁文字的 16 位编码:单段 70 个字符,拼接后每段 67 个。

仅解释——此处解释的术语不是我们销售的服务。

UCS-2 以每字符 16 位编码几乎任何文字,因此一条短信分段只能放 70 个字符。只要出现 GSM-7 字母表之外的字符(大多数 emoji 和大多数非拉丁文字),整条消息就会切换到 UCS-2。

编码按整条消息选择,所以 GSM-7 之外的一个字符就会改变全部文本。

编码、单位和分段

编码
UCS-2
字符数
22
编码单元
23
分段
1
示例消息的编码、字符数、按码元计算的大小和分段数。
文字说明

图中列出示例消息选用的编码、字符数、按编码单位计算的大小,以及该大小所需的分段数。UCS-2 的单位是 16 位码元。

编码如何选择

短信默认从 GSM-7 开始。出现该字母表之外的字符时,消息就转为 UCS-2,或转为网络支持的其他编码。切换覆盖整条消息,因此原本能放进 GSM-7 的字符也会各占两个字节。

每段可放 70 个字符,因为 140 字节除以每字符 2 字节正好是 70。基本多文种平面之外的 emoji 需要两个 UTF-16 码元。手机和短信中心实际使用 UTF-16,所以 emoji 密集的文本能放的字符更少。严格意义上的 UCS-2 根本无法表示这类字符。SMS 分段计算器 会显示具体数量。

常见问题

UCS-2 和 UTF-16 是一回事吗?

两者接近但不相同。UCS-2 使用固定的 16 位单元;UTF-16 在基本平面之外使用代理对,而手机和短信中心实际发送的是 UTF-16。

一个 UCS-2 分段能放多少个字符?

没有用户数据头时 70 个,有用户数据头时 67 个。补充平面中的 emoji 占两个 UTF-16 码元,严格意义上的 UCS-2 无法表示。

哪些语言需要 UCS-2?

许多非拉丁文字,以及任何含 GSM-7 之外字符的文本。部分带重音的拉丁字母就已经需要它。

了解更多

来源

  1. 3GPP TS 23.038: alphabets and language-specific information for SMS(短信的字母表与语言特定信息)