使用AT命令发送Unicode(USC2)SMS

使用AT命令发送Unicode(USC2)SMS,unicode,gsm,at-command,Unicode,Gsm,At Command,我正在尝试使用at命令和USC2编码发送Unicode短信。但它不起作用,因为我会出错。以下是我的意见: AT OK AT+CSCS = ? +CSCS: ("IRA","GSM","UCS2") AT+CSCS="UCS2" OK AT+CMGF=1 OK AT+CSMP=1,167,0,8 //So this one doesnt work, let's try with 17,167,0,8 ERROR AT+CSMP=17,167,0,8 OK AT+CMGS="+370******

我正在尝试使用at命令和USC2编码发送Unicode短信。但它不起作用,因为我会出错。以下是我的意见:

AT
OK
AT+CSCS = ? 
+CSCS: ("IRA","GSM","UCS2")
AT+CSCS="UCS2"
OK
AT+CMGF=1
OK
AT+CSMP=1,167,0,8 //So this one doesnt work, let's try with 17,167,0,8
ERROR

AT+CSMP=17,167,0,8
OK
AT+CMGS="+370********"
ERROR
或者我应该使用PDU模式来实现这一点


我试过使用旧的调制解调器,USC2在那个调制解调器中工作,但在一个im中不工作。但是我确信这个相互冲突的调制解调器支持USC2。

我发现我只需要将AT+CMGS中的号码编码到UCS2,现在它可以工作了:

AT+CMGS="002B003300370030************************"

在一个只应该使用数字的命令中看到“******”是相当奇怪的。我只是用“*”来保护隐私。那么AT+CSMP可以正常工作,但在+CMGS上不行,这就没有什么意义了。这不是编码问题。供来自标记为重复的其他线程的访问者参考-请注意
AT+CSCS=?//+CSCS:(“IRA”、“GSM”、“UCS2”)///AT+CSCS=“UCS2”
-这要求调制解调器支持的编码,然后选择UCS2编码,然后(…)更多供参考:注意\r vs\r\n vs调制解调器设置是的,这是正确的。在+CSCS=“UCS2”上运行
后,每个字符串都必须以这种方式编码(直到选择另一个字符编码),因此,例如,从UCS2切换到UTF-8将位于+CSCS=“005500540046002D0038”。值得强调的是,这个神奇的“002B00330037030..”只是一个字符串,编码为Unicode 16 BigEndian,一个字节一个字节转储为十六进制~“002B/0033/0037/0030…”,实际上等于问题中的“+370”。(我知道说“编码到UCS2”是情商,但实际上,我知道许多新手需要扩展它…)更多信息