先说两个单词byte和octet
他们都可以翻译成字节,区别就是octet是指八位字节,而byte根据系统的不同,位数也可能会不同。
下面的内容翻译自Wikipedia,但并不完整
http://en.wikipedia.org/wiki/GSM_03.38
在移动技术中,GSM 03.38或者3GPP 23.038是一个基于蜂窝电话在GSM的短消息服务使用的字符集。
信息通过默认GSM7-bit字母表,8-bit数据字母表和16-bit UTF-16字母表编码方式发送
对于GSM手持设备和网络元素,GSM 7-bit字母表是被强制支持的
但是,像阿拉伯语、汉语、韩语或者日语中的字符,必须被编码成16-bit UTF-16字符编码或者扩展的国家语言转换表
GSM信息标准编码是在23.038中建议的7 bit 默认字母表
7-bit字符必须被编码成字节并遵循下面3中包装方式之一:
CBS:使用这种编码方式,小区广播服务中,一条SMS中最多可以发送93个字符(最多包装82字节)
SMS:使用这种编码方式,在GMS网络中,一条SMS中最多可以发送160个字符(最多包装140字节)
USSD:使用这种编码方式,非结构化补充数据业务的SMS信息中,最多可以发送182个字符(最多包装160字节)
GSM 8位数据编码
8-bit数据编码模式处理信息作为原始数据。根据标准,这是编码的字母表是用户特定的
UCS-2编码
这种编码允许用户使用更大范围的字符和语言
UCS-2可以表现最常用的拉丁语和西方字符
一个单一的使用这种编码的SMS GSM信息最多可以有70个字符(140字节)
很多GSM智能手机上,没有UCS-2编码的明确预设置。
默认情况下,使用7-bit编码,直到输入了一个不在GSM 7-bit表中的字符
这种情况下,整个信息使用UCS-2编码方式重新编码,并且一条信息的最大长度立即由160减少到70
编辑短信时,智能手机应该显示已经使用的字符数和最大字符数。当一条信息确实超出了最大限制,信息将被按着包含信息的各个部分的多条连续的SMS发送(在每一部分中使用开始的几个字符包含一个序列号)这些部分之后将在收件人那里重新组装。一些GSM智能手机当需要发送多条短消息时,对需要发送的信息数量将会警告用户。
国家语言转换表
根据将要写入文本语言的不同,这些表格允许使用不同的字符集
对于一个给定的信息,表格的选择是在一个SMS信息的用户数据头部分中选定的
并且可以指定整个文本或者单一字符
使用转换表,一个信息的字符仍然能使用7-bit编码,但是可以使用一个不同的集合来正确显示重音和语言特定的字符
编码到136个字节中(140字节减去用来指示转换表和语言代码的使用的用户数据头需要的4字节)
最多为155个字符(136 * 8 / 7)
对法语、希腊语、俄语、保加利亚语、阿拉伯语、希伯来语和大多数中部欧洲语言需要比默认7-bit标准字符集和默认7-bit扩展字符集更广的范围的语言来说,仍然没有定义国家语言转化表
如果有任何字符不能用默认的GSM 7-bit字符集表示,信息将会被自动使用UCS-2重新编码,代价是一条信息可能会被分成超过两条(当一条信息被分割成多个部分,用户数据头还需要一些字节用来指示每部分的序号)
虽然GSM 03.38的一个修订版中已经为德语、英语、意大利语、西班牙语、荷兰语、瑞典语、丹麦语、芬兰语、挪威语、希腊语和土耳其语的小区广播系统(CBS)定义了数据编码方案,之后的版本中又添加了匈牙利语、波兰语、捷克语、希伯来语、阿拉伯语、俄语和冰岛语,但是没有为这些语言定义编码表。目的是单纯的为了识别信息的语言
日语的基本假名、朝鲜朝鲜文字母或者中国的汉语也没有语言转换表
在日本这通常不是个问题,因为日本信息使用GSM和WAP之外的其他的标准
转贴请保留以下链接
本人blog地址