短信编码

原创
2018/01/30 10:50
阅读数 207

由于短信模板字数限制的原因,查询信息如下:

在上世纪80年代,由于当时的技术条件有限,无线传输的带宽不是很高,并且主要用于汽车电话上,这就要求手机短信要言简意赅。

而当时短信技术的主要发明人Hillebrand为了遵从这一要求,在打字机上随意地打出几条字句组成信息进行试验。当完成打字并开始检查字句的字符数时,他发现这些信息每条都只有1-2行的长度,总字符数也小于160个。

后来他说:“对于人们日常使用,这些数字足够了。”就这样,他决定将160个字符作为手机短信的长度上限,也确立了今天手机短信的字符数限制数。

手机短信只能编辑70个汉字、160个纯英文字符背后的秘密

现在根据国际标准,基于英文ASCII采用7位编码,如果发送纯英文字符,1120位的限额可以传送1120÷7=160个字符。当传送的字符中包含中文在内的双字节字符,不论中文还是其他文字,全角还是半角,都必须采用2个字节的8位编码,因此1120÷8÷2=70个字符,即最多传送70个汉字。(亦即只要短信中包含了一个双字节字符,则所有的单个字符都会被当做双字节字符。所以用mb_strlen()方法是没有问题的。)

如今,短信已为全世界手机用户所熟悉和使用;同时在很多年的时间里成为了各大通信运营商额生财之道。

以下为知乎回答:

7位元字符就是指标准ASCII去掉最高位的0。以这种方式进行编码,在美国这样的国家,发送的短信字符都是ASCII码表里的,所以没必要浪费一个字位。

而短信协议支持7字位、8字位、16字位3种编码,7字位用于美国,可以发送160个字母,8字位用于欧洲国家,16字位用于中日韩俄等国家,使用UCS-2编码。而UCS-2把所有Unicode字符编码为2字节,所以即使英文字母也会编码成2个字节。

使用Windows Mobile 6系统做测试,新建短信后输入一个英文字母,下面显示1/160,再输入一个显示2/160,这就是7字位状态,可以在140字节里装下160个字符。当再输入一个汉字的时候,下面的显示立刻变成3/70,这就是16字位状态,每个字符都占2个字节,140字节只能装下70个字符,哪怕里面是69个英文字符加1个汉字。

如果短信超过长度,那么系统就自动分成多条短信来发。因为要加入一些标识性字符以表示顺序,所以英文每条153个,中文每条67个。接收方如果是新一点的手机就会把这几条合并后显示给用户,老一点的手机就会分别显示每条短信。



作者:知乎用户
链接:https://www.zhihu.com/question/20111231/answer/14012285
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部