一种短信编码格式的转换方法转让专利

申请号 : CN201010258052.0

文献号 : CN102014352B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张宏

申请人 : 上海闻泰电子科技有限公司

摘要 :

本发明揭示了一种短信编码格式的转换方法,可以实现将包含特殊字符的短信从UCS2编码格式转变为7Bit编码格式。本发明提高了单条短信的容量,原本每条UCS2短信容量为70个字符,现在每条7Bit短信容量为160个字符,大大提高了短信容量。本发明还降低了短信的使用费用,包含100个特殊字符和英文字符的短信,使用UCS2编码格式发送需两条短信,使用本发明后,变为7Bit编码格式,只需一条短信,节约了发送费用。

权利要求 :

1.一种短信编码格式的转换方法,适用于GSM字符集编码格式转换,其特征在于,包括以下步骤:

1.1、在短信应用层建立特殊字符UCS2与WT-8BIT对应表以及将特殊字符UCS2编码为WT-8BIT格式的应用层编码函数;在短信接口层建立WT-8BIT与GSM对应表以及将WT-8BIT编码为GSM格式的接口层编码函数;

1.2、调用所述应用层编码函数,将短信中的特殊字符按照特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,最后将编码格式置为7Bit;

1.3、调用所述接口层编码函数,将所述特殊字符按照WT-8BIT与GSM对应表的对应规则编码为GSM格式,并调用协议栈短信发送函数进行发送;

所述步骤1.2和步骤1.3进一步包括以下步骤:

2.1、定义一U16数组,用以存放短信中的英文字母和特殊字符;

2.2、解析输入的短信内容,若为中文字或者其他不在0x00-0xff之间的字符,则将其置为UCS2格式;若为英文字符、数字、特殊字符以及其他在0x00-0xff之间的字符,则转下步骤;

2.3、调用应用层编码函数,取所述U16数组中英文字母的低八位存到应用层编码函数中,将短信中的特殊字符根据特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,并存到应用层编码函数中,并将编码格式置为7Bit格式;

2.4、在接口层中判断所述短信的编码格式,若为步骤2.2中置为的UCS2格式,则直接调用协议栈短信发送函数发送短信;若为步骤2.3中的7Bit格式,则转下步骤;

2.5、调用接口层编码函数,将步骤2.3输出的特殊字符根据WT-8BIT与GSM对应表的对应规则编码为GSM格式,调用协议栈短信发送函数发送短信。

2.如权利要求1所述的方法,其特征在于,所述应用层编码函数定义一个U8的数组u8StrArr[MAX_CHAR_NUM],用于存放编码后的英文字和特殊字符,其中U8为unsigned short int,MAX_CHAR_NUM=153*3。

3.如权利要求2所述的方法,其特征在于,所述步骤2.3中,调用应用层编码函数,取所述U16数组中英文字母的低八位存到应用层编码函数中的u8StrArr中,将短信中的特殊字符根据特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,并存到应用层编码函数中的u8StrArr中,并将编码格式置为7Bit格式。

说明书 :

一种短信编码格式的转换方法

技术领域

[0001] 本发明涉及短信编码领域,特别涉及一种短信编码格式的转换方法。

背景技术

[0002] 短信编码格式有三种,分别是UCS2、7bit、8bit编码。其中UCS2编码格式下,每条短信最大字符数为70个;7bit编码格式下,每条短信的最大字符数为160个。
[0003] 短信支持多种语言、多种字符的显示与编辑,其中包括部分特殊字符,一共有10个字符,有如下特征:值为0x03XX(XX表示某两个数字)、属于GSM字符集,比如:Φ、Γ、Λ等,这些字符的UCS 2编码值为0x03a6、0x0393、0x039b,这些字符值由于大于0xff,所以会被当作普通Unicode字符作处理,占2个字节。其所在的短信格式则被置为UCS2。
[0004] 比如一段包含100个英文字母和3个特殊字符的文字,若是直接按照UCS2编码格式来发送,因为UCS2编码格式的短信,其最大长度是70个字符,因此这条短信就会被分为两条短信发送。而如果使用本文所述的编码格式转换算法,先将其转化为7Bit编码格式,然后再发送,则只需一条短信即可包含所有信息。这样可以提高单条短信的容量,节省发送短信的费用。
[0005] 由以上可以看出,迫切需要提供一种短信编码格式的转换方法,其能扩大每条短信的容量,同时也节省发送短信的费用。

发明内容

[0006] 本发明的目的是提供一种短信编码格式的转换方法,其能将含特殊字符的短信从UCS2编码格式转变为7Bit编码格式,扩大了每条短信的容量,也节省了发送短信的费用。
[0007] 本发明提供一种短信编码格式的转换方法,适用于GSM字符集编码格式转换,包括以下步骤:
[0008] 1.1、在短信应用层建立特殊字符UCS2与WT-8BIT对应表以及将特殊字符UCS 2编码为WT-8BIT格式的应用层编码函数;在短信接口层建立WT-8BIT与GSM对应表以及将WT-8BIT编码为GSM格式的接口层编码函数;
[0009] 1.2、调用所述应用层编码函数,将短信中的特殊字符按照特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,最后将编码格式置为7Bit;
[0010] 1.3、调用所述接口层编码函数,将所述特殊字符按照WT-8BIT与GSM对应表的对应规则编码为GSM格式,并调用协议栈短信发送函数进行发送。
[0011] 所述步骤1.2和步骤1.3进一步包括以下步骤:
[0012] 2.1、定义一U16数组,用以存放短信中的英文字母和特殊字符;
[0013] 2.2、解析输入的短信内容,若为中文字或者其他不在0x00-0xff之间的字符,则将其置为UCS2格式;若为英文字符、数字、特殊字符以及其他在0x00-0xff之间的字符,则转下步骤;
[0014] 2.3、调用应用层编码函数,取所述U16数组中英文字母的低八位存到应用层编码函数中,将短信中的特殊字符根据特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,并存到应用层编码函数中,并将编码格式置为7Bit格式。
[0015] 2.4、在接口层中判断所述短信的编码格式,若为步骤2.2中置为的UCS2格式,则直接调用协议栈短信发送函数发送短信;若为步骤2.3中的7Bit格式,则转下步骤;
[0016] 2.5、调用接口层编码函数,将步骤2.3输出的特殊字符根据WT-8BIT与GSM对应表的对应规则编码为GSM格式,调用协议栈短信发送函数发送短信。
[0017] 所述应用层编码函数定义一个U8的数组u8StrArr[MAX_CHAR_NUM],用于存放编码后的英文字和特殊字符,其中U8为unsigned short int,MAX_CHAR_NUM=153*3。
[0018] 所述步骤2.3中,调用应用层编码函数,取所述U16数组中英文字母的低八位存到应用层编码函数中的u8StrArr中,将短信中的特殊字符根据特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,并存到应用层编码函数中的u8StrArr中,并将编码格式置为7Bit格式。
[0019] 采用本发明所述的一种短信编码格式的转换方法,可以实现将包含特殊字符的短信从UCS2编码格式转变为7Bit编码格式。本发明提高了单条短信的容量,原本每条UCS2短信容量为70个字符,现在每条7Bit短信容量为160个字符,大大提高了短信容量。本发明还降低了短信的使用费用,包含100个特殊字符和英文字符的短信,使用UCS2编码格式发送需两条短信,使用本发明后,变为7Bit编码格式,只需一条短信,节约了发送费用。

附图说明

[0020] 图1为本发明所述方法的主流程图。

具体实施方式

[0021] 下面结合附图和实施例进一步说明本发明的技术方案。
[0022] 首先要说明的是,本发明实施的前提条件是:首先,GSM字符集包含这些特殊字符。GSM字符集是短信协议规范定义的、使用7bit压缩格式的一个字符集,所有字符在这里均是用7位来表示,这样就可以实现使用140个字节的短信数据包来发送160个字符。这些特殊字符在GSM字符集中,均有一个7位的值来表示。因此我们才可以通过编码方式,把特殊户字符从0x03XX编码为GSM字符值;其次,短信中其他字符均在0x00-0xff之间。若超过这个范围,除了上述的特殊字符,其他字符还是作为unicode字符,因无法转换为对应的GSM字符,因此不适合本算法。
[0023] 综上所述,当特殊字符属于GSM字符集,并且短信其他字符均是在0x00-0xff之间时,就可以使用本算法来将特殊字符编码,使包含其的短信由UCS2编码格式变为7Bit编码格式。
[0024] 本实施例将介绍一条包含100个英文字和1个特殊字符(‘Δ’,UCS2:0x0394,GSM:0x10,WT-8BIT:0x10)短信的编码格式转换过程。
[0025] 参见图1,本发明提供的一种短信编码格式的转换方法100,包括以下步骤:
[0026] 101、建立特殊字符UCS2、WT-8BIT以及GSM之间的对应表以及编码函数。
[0027] 在短信应用层建立特殊字符UCS2与WT-8BIT对应表以及将特殊字符UCS2编码为WT-8BIT格式的应用层编码函数(MMI层编码函数);在短信接口层建立WT-8BIT与GSM对应表以及将WT-8BIT编码为GSM格式的接口层编码函数(NAPI层编码函数)。在本实施例中,MMI层为短信的应用层,NAPI层为短信的应用层与底下的协议栈层之间的接口层,它负责将MMI层字符编码为协议栈层的字符,将协议栈层的字符解码为MMI层字符。相应的,应用层编码函数即为MMI层编码函数,接口层编码函数即为NAPI层编码函数,所述的编码函数在代码中体现为两个数组。
[0028] 所述的特殊字符UCS2、WT-8BIT以及GSM之间的对应表见表1:
[0029] 表1
[0030]GSM UCS2 WT-8BIT Symbol
0x10 0x0394 0x10 Δ
0x12 0x03a6 0x12 Φ
0x13 0x0393 0x13 Γ
0x14 0x039b 0x14 Λ
0x15 0x03a9 0x15 Ω
0x16 0x03a0 0x16 ∏
0x17 0x03a8 0x17 Ψ
0x18 0x03a3 0x18 ∑
0x19 0x0398 0x19 Θ
0x1a 0x039e 0x1a Ξ
[0031] 在MMI层的UCS2到WT-8BIT的MMI层编码函数中,定义一个U8的数组u8StrArr[MAX_CHAR_NUM],用于存放编码后的英文字和特殊字符,其中U8是unsigned short int,MAX_CHAR_NUM=153*3。
[0032] 102、定义一个U16的数组:u16StrArr[MAX_CHAR_NUM],用于存放英文字和特殊字符,其中U16是unsignedint,MAX_CHAR_NUM=153*3。
[0033] 103、解析输入的短信内容,若为第一预定字符则转下一步骤,否则将其置为UCS2格式。
[0034] 使用for循环,从开始到最后一个字符,判断这条短信内容。若是含有中文字或者其他不在0x00-0xff之间的字符,则该条短信为UCS2编码格式,因此不需再对特殊字符进行编解码,将其编码格式置为UCS2。若只包含英文字符、数字、特殊字符以及其他在0x00-0xff之间的字符时,则转下一步骤。
[0035] 104、调用MMI层编码函数,将短信中的特殊字符编码为WT-8BIT格式。
[0036] 调用MMI层编码函数,取所述U16数组中英文字母的低八位存到MMI层编码函数中,将短信中的特殊字符根据特殊字符UCS2与WT-8BIT对应表的对应规则编码为WT-8BIT格式,并存到MMI层编码函数中,并将编码格式置为7Bit格式。
[0037] 依次将U16的英文字,取其低八位存到u8StrArr[]。同时调用编码函数appSms DecodeUcs2ToWT(U16uniSym,U8*wtSym),将短信中的特殊字符编码为WT-8BIT编码格式,并存到u8StrArr[]中,最后将编码格式置为7Bit。其中编码函数appSmsDecodeUcs2ToWT(U16uniSym,U8*wtSym)的功能是将特殊字符,根据表1的对应规则,编码为WT-8BI T格式,uniSym为输入参数,特殊字符unicode值,wtSym为输出参数,为特殊字符的WT-8BIT编码格式的值。
[0038] 105、在MMI层编码结束后,将编码后的短信输出至NAPI层进行处理。MMI层编码结束后,将u8StrArr作为函数输入参数,到NAPI层进行处理。
[0039] 106、在NAPI层判断所述短信的编码格式,若为UCS2格式则直接调用协议栈短信发送函数发送短信,若为7Bit格式则转下步骤。
[0040] 该步骤中,若所述短信的编码格式为步骤103中置为的UCS2格式,则直接调用协议栈短信发送函数发送短信;若为步骤104中的7Bit格式,则转下步骤。
[0041] 107、调用NAPI层编码函数,将特殊字符编码为GSM格式并调用协议栈短信发送函数发送短信。
[0042] 调用NAPI 层编 码函 数napiSmsDecodeWTToGsm(U8wtSym,,U8*g smSym),将WT-8Bit格式的特殊字符编码GSM格式,其中函数napiSmsDecodeWTToGsm(U8wtSym,,U8*gsmSym)的功能是将特殊字符,根据表1的对应规则,编码为gsm格式,wtSym为输入参数,特殊字符WT-8BIT值,gsmSym为输出参数,为特殊字符的GSM编码格式的值。调用协议栈短信发送函数发送短信,因为短信内容为7bit编码格式,其每段最大字符数为160个,而当前短信内容为101个字符,故作为一条短信发送出去。
[0043] 使用本发明后,可以实现两个目的:一是提高了单条短信的容量,原本每条UCS2短信容量为70个字符,现在每条7Bit短信容量为160个字符,大大提高了短信容量。二是降低了短信的使用费用。包含100个特殊字符和英文字符的短信,使用UCS2编码格式发送需两条短信,使用本发明后,变为7Bit编码格式,只需一条短信,节约了发送费用。
[0044] 本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上实施例的变化、变型都将落在本发明的权利要求书范围内。