用arduino ide 写程序控制sim900a发送中文短信

为啥只能发送英文短信,发送中文只收到一个符号,用unicode转码后也不管用,求帮助
代码如下:

void sendmessage(){
Serial.println("AT");
delay(2000);
Serial.println("AT+CMGF=1");
delay(2000);
Serial.println("AT+CSCS=“UCS2”");
delay(2000);
Serial.println("AT+CSMP=17,167,2,25");
delay(2000);
Serial.println("AT+CMGS=\"\u0031\u0037\u0038\u0036\u0033\u0035\u0032\u0033\u0038\u0034\u0036\"");//转码后的手机号
delay(2000);
Serial.print("\u5bb6\u4e2d\u71c3\u6c14\u6cc4\u6f0f");转码后的中文短信
delay(2000);
Serial.write(0x1A);

}

另一位其实已经回答到了,发中文短信用这个指令
AT+CSMP=17,167,0,8
主要就是第四个参数要写8,不然中文的unicode发送出去后会有乱码

https://www.cnblogs.com/kekeoutlook/p/12048532.html

AT+CSMP 设置短消息文本参数(text模式下)

设置:AT+CSMP=,<vp/scts>,,

响应:+CSMP:,<vp/scts>,,

AT+CSMP

1. 按照不同的位进行介绍

   bit       5    4    3    2     1     0

   value 0    1    0    0     0     1             

①bit 1 0 两位表示 SMS_SUBMIT,取为0 1时方向是手机->消息中心,还有三种取值这里不介绍。
②bit 2 取值 0 表示 后续没有短信息要发送;
取值 1 表示 后续还有短信息。
③bit 4 3 两位可取1 0

④ bit 5 取值 0 关闭传送回报
取值 1 打开传送回报。

通常情况下系统默认为010001即为0X11 十进制为17(此时没有状态报告回报)

2.第二个参数 vp的设置

  1. 0 - 143 对应的保留时间为: (vp + 1)*5 分钟,最大为12小时
  2. 144-167 对应的保留时间为: 12小时 + (vp - 143)*30分钟, 最大为24小时
  3. 168-196 对应的保留时间为: (vp - 166) * 1 天
  4. 197 - 255 对应时间为: (vp - 192)*1 星期

所以有的模块默认vp = 167对应的就是24小时。

3.第三个参数略。通常为0
4.第四个参数:为0则只能发送英文,8为发送中文。