我正在使用Java通过AT命令与GSM调制解调器(Siemens)通信。
我将调制解调器的编码设置为“UCS2”。
当我发送消息时,只要我发送电话号码,就会收到来自设备的ERROR消息:
AT+CSCS=UCS2
OK
AT+CSMP=17,167,0,8
OK
AT+CMGF=1
OK
AT+CMGS="0919xxxxxxx"
ERROR
请帮帮我,拜托了!:(
我正在使用Java通过AT命令与GSM调制解调器(Siemens)通信。
我将调制解调器的编码设置为“UCS2”。
当我发送消息时,只要我发送电话号码,就会收到来自设备的ERROR消息:
AT+CSCS=UCS2
OK
AT+CSMP=17,167,0,8
OK
AT+CMGF=1
OK
AT+CMGS="0919xxxxxxx"
ERROR
请帮帮我,拜托了!:(
我认为你对AT+CMGS
命令中的<da>
地址参数的编码不正确。
你提到了91和92格式,但实际上,你是在指'81'/'82'格式,正如SIM卡中UCS2编码方式下的Alpha字段编码博客文章所解释的那样,就像3GPP TS 11.11规定的那样。
在运行AT+CSCS="UCS2"
之后,每个字符串都必须以这种方式进行编码,因此,要从UCS2切换到UTF-8,例如,将为AT+CSCS="005500540046002D0038"
。
80/81/82编码的Alpha字段仅适用于某些情况,而不是一般的UCS2编码字符串。特别需要注意的是,上述AT+CSCS
命令中"UTF-8"字符串的编码与此无关。这也适用于AT+CMGS
命令中的<da>
参数。
很有可能你的调制解调器不支持使用UCS2的CMGS。