如题:Cdma modem 中文短信乱码怎么解决啊

解决方案 »

  1.   

     Console.WriteLine("发送AT指令");
                mSerialPort.Open();
                mSerialPort.Write("AT+WSCL=6,4\r");
                mSerialPort.Write("AT+CMGF=1\r");
                mSerialPort.Write("AT+CMGS=\"15960287xxx\"\r");            string str = "我是采用如下方法编码的,但对方收到的时部分是乱码";
                byte[] but = System.Text.Encoding.Unicode.GetBytes(str);
                byte t;
                for (int i = 0; i < but.Length; i=i+2)
                {
                    t = but[i];
                    but[i]=but[i+1];
                    but[i + 1] = t;
                }            mSerialPort.Write(but,0,but.Length);            mSerialPort.Write(new byte[] { 0x00, 0x1a }, 0, 2);
                mSerialPort.Close();            Console.WriteLine("发送完毕")
      

  2.   

    做过蓝牙,试下UTF-8或UTF-16编码
      

  3.   

    把unicdoe更改为BigEndianUnicode
    去掉:
        byte t; 
                for (int i = 0; i < but.Length; i=i+2) 
                { 
                    t = but[i]; 
                    but[i]=but[i+1]; 
                    but[i + 1] = t; 
                } 
    如果还不行,去掉 mSerialPort.Write("AT+CMGF=1\r"); 试试
    如果还不行,在关闭串口之气那再mSerialPort.WriteLine("001a")