文档章节

短信编码

vinci321
 vinci321
发布于 01/30 10:50
字数 855
阅读 24
收藏 0
点赞 0
评论 0

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

在上世纪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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

© 著作权归作者所有

共有 人打赏支持
vinci321
粉丝 6
博文 85
码字总数 205255
作品 0
短信编码类无错版PDUdecoding.cs

///////////////////////////////////// ///程 序 员:武志文(蚕蛹) /// sillnet163.net ///文 件:PDUdecoding.cs ///概 要:针对国内短信编码(USC2) ///组成结构:包含四个函数: /// sm...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Python 调用 GSM A6

【环境准备】 1、操作系统: Windows 7 x64 SP1 2、Python 版本: python-3.6.3-amd64 3、第三方组件: (1)、 pip3 install pyserial (2)、下载smspdu: python3 setup.py build install...

RQSLT ⋅ 2017/10/05 ⋅ 0

短信的发送

短信发送格式为: AA 02 +11Bytes手机号+数据。需要说明的是数据长度不超过140Byte,为了手机能够正确显示需经UNICODE 编码,因此每帧最多70个字符。手机号码采用ASCII编码,例如,”1”的A...

金笛子 ⋅ 2016/02/03 ⋅ 0

短信部分——PDU简介及其格式

(九) 短信部分——PDU简介及其格式   PDU是大多数手机短信通讯的核心,仅有少数手机只支持Text模式(例如笔者的MOTO C330)。PDU模式比起Text模式可以提供能为强大的功能,但其编码较Text模...

zhengyijie ⋅ 2014/02/17 ⋅ 0

SMS短信通API——(2)参数与返回值详解

1. API参数说明 参数变量 说明 GBK编码URL http://gbk.sms.webchinese.cn/ UTF-8编码URL http://utf8.sms.webchinese.cn/ Uid 本站用户名(如您无本站用户名请先注册) Key 注册时填写的接口...

晨曦之光 ⋅ 2012/04/24 ⋅ 0

短信猫问题

都说短信猫可以发70个汉字,可是我的却只能发45个汉字左右! 环境:win7,系统编码gbk 程序运行环境:tomcat 下,获取file.encoding 同样是gbk 短信猫:gsm 短信猫 按照网上说的理论,140个字...

lifigure ⋅ 2011/12/09 ⋅ 0

Android中文短信的实现原理

我们在构造时直接通过一个二进制的字节数组来发送UCS2即可,而英文使用7位的编码可以减少字节占用,在一条短信中发送更多的字符内容,稍后我们提供Android中文短信发送的所有源代码。 似乎G...

无鸯 ⋅ 2011/09/15 ⋅ 3

Java通过SMS短信平台实现发短信功能

本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了。在使用前需要注册,注册地址为http://sms.webchinese.cn/...

zh151832 ⋅ 2015/12/01 ⋅ 0

HTTP电脑发送短信接口调用示例

一、工作方式 双方通过HTTP方式交互数据,第三方可以简单的“name=value”方式发送提交内容或响应请求内容。即通过HTTP的GET/POST方式交换。 另外双方需要保证数据传输的完整性和安全性,每次...

维美金牌信通 ⋅ 2014/07/01 ⋅ 1

项目在eclipse上运行发送的post请求正常,但是用本地tomcat启动或者部署在服务器上发送的post请求参数就乱码了

我用的JFinal框架搭建的一个项目,所有相关的编码指定都是UTF-8,项目里有一个发送短信的post请求,请求参数也设置编码为UTF-8了。但问题还是来了,在eclipse中启动没有问题,但是用本地tom...

N2H4 ⋅ 2017/08/18 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 13分钟前 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 14分钟前 ⋅ 0

容器之查看minikue的environment——minikube的环境信息

执行如下命令 mjduan@mjduandeMacBook-Pro:~/Docker % minikube docker-envexport DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/U......

汉斯-冯-拉特 ⋅ 15分钟前 ⋅ 0

mysql远程连接不上

设置了root所有hosts远程登录,可是远程登录还是失败,原因可能如下: 登录本地数据库 mysql -uroot -p123456 查询用户表 mysql> select user,host,password from mysql.user; 删除密码为空的...

冰公子 ⋅ 15分钟前 ⋅ 0

动态规划小题

凑硬币问题 问题: 有1元、3元、5元面值的硬币若干,要凑到11元需要最少几个硬币? 这是最简单的DP问题,记凑a元需要b个硬币为: n[a] = b。 1)首先,如果凑0元 需要0个硬币表示为 n[0] = 0...

阿豪boy ⋅ 17分钟前 ⋅ 0

shell之切换目录命令cd

让我们来看看linux下简单的 cd 命令,就是切换目录用的,在你当前的目录位置,进入下一个目录 让我们看看这个阿里云 ubuntu 目录,Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设...

woshixin ⋅ 21分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 55分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 今天 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部