GPRS发送中文短信的问题
2010-07-24 19:52
369 查看
linux下,板子通过串口连接发送中文短信,关于串口设置,及发送英文短信很简单就不说了,先说说如何做,及遇到的问题。
linux下,在VIM(一定在vim中保存中文,这个问题下面再提)保存中文内容,通过iconv函数从当然语言编码转为GPRS的UCS2的编码。
int encode (char * message)
{
int src_len,dest_len=MAXSIZE;
iconv_t cd;
char buffer[MAXSIZE];
//char buffer[MAXSIZE]="有贼来入侵了";
strcpy(buffer,message);
char dest[MAXSIZE];
char * pin=buffer;
char * pout=dest;
src_len=strlen(buffer);
if((cd =iconv_open("UNICODEBIG","utf8"))== (iconv_t)-1)
{
perror("cann't open iconv_open function/n");
exit(-1);
}
if(iconv(cd, &pin,&src_len,
&pout,&dest_len) == (size_t)-1)
{
perror("cann't open iconv function/n");
exit(-1);
}
iconv_close(cd);
strcpy(message,dest);
return strlen(dest);
}
需要注意的就是iconv_open的二个参数,以前看到参数如GB2312 GB-ZN,参数传进去都是错误,我用的ubuntu,所以参数是utf8,虽然GPRS用的UCS2的编码,转化的时候用unicodebig编码的方式,发送中文短信接收的时候,都能正常的显示。
还有个问题是存储中文的内容一定要用VIM保存,并且不能再用GEDIT打开 或者你把源文件拷到windows下添加几行注释,再拷回编译照样编码转化时出错。虽然gedit上设置为utf8编码,这样问题依然存在。
另外一个问题说,中英文短信混编的问题。linux下保存中文,一个中文字符,按unicode应该是二个字节,但是vim保存中文的时候,很少有情况是二个字节,大部分情况是三个字节。保存英文字符那是很固定,都是一个字节。中英文混编的问题出来了,vim可以自动识别中英文,并且按三字节和一个字节保存,并且都不知道如何区分中英文(如果英文恰好作为中文的第一个字节,如何区分,是作为英文还是作为中文的第一个字节)。中英文短信混遍的问题,接受的手机显示的时候,从字符开始以后都是乱码。
另外需要注意的就是,GPRS发送AT指令以/r结束,GPRS回的时候大部分以/n/t开始和结束。短信内容以/x1a(ctrl+Z)结束。还有个需要注意的是,有的时候每个字节要格式化成二位的十六进制输出。
遇到的几个问题,如果你有高见,请指点下,谢谢。
linux下,在VIM(一定在vim中保存中文,这个问题下面再提)保存中文内容,通过iconv函数从当然语言编码转为GPRS的UCS2的编码。
int encode (char * message)
{
int src_len,dest_len=MAXSIZE;
iconv_t cd;
char buffer[MAXSIZE];
//char buffer[MAXSIZE]="有贼来入侵了";
strcpy(buffer,message);
char dest[MAXSIZE];
char * pin=buffer;
char * pout=dest;
src_len=strlen(buffer);
if((cd =iconv_open("UNICODEBIG","utf8"))== (iconv_t)-1)
{
perror("cann't open iconv_open function/n");
exit(-1);
}
if(iconv(cd, &pin,&src_len,
&pout,&dest_len) == (size_t)-1)
{
perror("cann't open iconv function/n");
exit(-1);
}
iconv_close(cd);
strcpy(message,dest);
return strlen(dest);
}
需要注意的就是iconv_open的二个参数,以前看到参数如GB2312 GB-ZN,参数传进去都是错误,我用的ubuntu,所以参数是utf8,虽然GPRS用的UCS2的编码,转化的时候用unicodebig编码的方式,发送中文短信接收的时候,都能正常的显示。
还有个问题是存储中文的内容一定要用VIM保存,并且不能再用GEDIT打开 或者你把源文件拷到windows下添加几行注释,再拷回编译照样编码转化时出错。虽然gedit上设置为utf8编码,这样问题依然存在。
另外一个问题说,中英文短信混编的问题。linux下保存中文,一个中文字符,按unicode应该是二个字节,但是vim保存中文的时候,很少有情况是二个字节,大部分情况是三个字节。保存英文字符那是很固定,都是一个字节。中英文混编的问题出来了,vim可以自动识别中英文,并且按三字节和一个字节保存,并且都不知道如何区分中英文(如果英文恰好作为中文的第一个字节,如何区分,是作为英文还是作为中文的第一个字节)。中英文短信混遍的问题,接受的手机显示的时候,从字符开始以后都是乱码。
另外需要注意的就是,GPRS发送AT指令以/r结束,GPRS回的时候大部分以/n/t开始和结束。短信内容以/x1a(ctrl+Z)结束。还有个需要注意的是,有的时候每个字节要格式化成二位的十六进制输出。
遇到的几个问题,如果你有高见,请指点下,谢谢。
相关文章推荐
- GPRS发送中文短信的问题
- [转载]GPRS SIM300发送中文短信
- 通过GPRS模块用Text模式发送中文短信的问题
- 使WaveCom CDMA猫发送中文短信的乱码问题
- WM 模拟器常见问题如何联网、打电话、发送短信、连接GPRS等
- 一种解决在Linux环境下发送短信中文乱码问题的方案
- [转载]GPRS SIM300发送中文短信
- 如何解决 Nokia 3650 用程序发送短信的中文乱码问题
- Text模式下发送中文短信问题(Sim900A R11.0)
- GPRS用AT命令发送中文短信(TEXT模式到PDU模式的转换)
- WM 模拟器常见问题如何联网、打电话、发送短信、连接GPRS、硬起等
- [转载]GPRS SIM300发送中文短信
- WM 模拟器常见问题如何联网、打电话、发送短信、连接GPRS等
- GPRS发送中文短信--Text模式转换为PDU模式
- GSM PDU 模式发送中文短信
- BaoCms短信发送失败问题解答
- iWebSMS2000短信发送问题记录
- rsocket 发送中文字符串乱码问题
- 发送中文短信
- C# POST 发送XML(返回string中可能出现中文乱码问题)