通过 GSM 调制解调器以短信形式发送 utf-8 字符

本文关键字:utf-8 字符 GSM 调制解调器 通过 | 更新日期: 2023-09-27 18:30:53

我正在使用诺基亚 5228 通过 COM 端口发送短信,当我发送 UTF-8 字符时,我得到错误的符号。 英文字符工作良好。
我该如何解决这个问题?

        public static string SMSMessage = "Привет";
        public static string CellNumber = "number...";
        private void Form1_Load(object sender, EventArgs e)
        {
            sp = new SerialPort();
            sp.PortName = "COM12";
            sp.Encoding = UTF8Encoding.UTF8;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (!sp.IsOpen)
                {
                    sp.Open();
                    this.sp.WriteLine(@"AT" + (char)(13));
                    Thread.Sleep(200);
                    this.sp.WriteLine("AT+CMGF=1" + (char)(13));
                    Thread.Sleep(200);
                    this.sp.WriteLine(@"AT+CMGS=""" + CellNumber + @"""" + (char)(13));
                    Thread.Sleep(200);
                    this.sp.WriteLine(SMSMessage + (char)(26));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Exception : {0}", ex.Message), "Port Error");
            }
        }

通过 GSM 调制解调器以短信形式发送 utf-8 字符

问题是,我必须使用 UCS2。

this.sp.WriteLine(StringToUCS2("Привет, привіт !@#%") + char.ConvertFromUtf32(26));

public static string StringToUCS2(string str)
        {
            UnicodeEncoding ue = new UnicodeEncoding();
            byte[] ucs2 = ue.GetBytes(str);
            int i = 0;
            while (i < ucs2.Length)
            {
                byte b = ucs2[i + 1];
                ucs2[i + 1] = ucs2[i];
                ucs2[i] = b;
                i += 2;
            }
            return BitConverter.ToString(ucs2).Replace("-", "");
        }