我在用CDMA手机模块发短信的时候,发送英文短信测试通过了,但在发送中文短信的时候老是有问题,收到的都是乱码,看到有地方说得发送unicode编码,但我不知道发送何种编码才正确。
    我先
     AT+CMGF
     AT+WSCL=6,4
     AT+CMGS="139999999999",10
接着我再输出wchar_t类型的您好0x60A8,0x597D
     我这样
wchar_t   *sms=new wchar_t(sizeof(wchar_t)*4);
sms[0]=0x60A8;
sms[1]=0x597D;
sms[2]=0x001A;
sms[3]=0x0000;
     然后wirte到串口,但手机收到的是乱码    我换成这样:
         char sms[8];
         sms[0]=0x60;
         sms[1]=0xA8;
         sms[3]=0x59;
         sms[4]=0x7d;
         sms[5]=0x00;
         sms[6]=0x1A;
     然后wirte到串口,但手机收到的还是乱码     换成:
       char sms[12]="60A8597D001A";
     然后wirte到串口,但手机收到的一样还是乱码
我就不懂这unicode编码要怎样编了,哪位老兄指点一下,调通后500分再送上(另外开几个贴你过来领分就是了,说到做到)

解决方案 »

  1.   

    使用Unicode一般用"_T"宏,它在工程设置Unicode的时候使用unicode没设置的时候和普通使用一样。例如:
    CString str = _T("你好");
    需要在project-》Seetings->c/c++下的preprocessor definitions下添加UNICODE,_UNICODE
      

  2.   

    我用MFC的WCHAR还是一样是乱码,用Unicode"_T"宏以添加UNICODE,_UNICODE后对其它地方CString到char*的转换编译时出错,我一会看一下把错误排除能不能发
      

  3.   

    用AT指令通过短信MODEM发短信时候
    中文/日文等多国语言短信和英文短信的编码格式是不同的
    英文短信为字符格式,中文短信为二进制格式
    它使用一种编码格式来表示二进制方式
    具体的可以查看WWW.VCKBASE.COM上的文章
      

  4.   

    应该是pdu编码,可以查一下它的编码方式
      

  5.   

    编码基础文章:
    http://www.regexlab.com/zh/encoding.htm
      

  6.   

    谢谢大家,终于解决了,原因是我前面发送的命令加了\r\n,实际上只要加\r就行了,加个\n后挤进短信内容里去了,这样后面全成了乱码