我在 Delphi 2010 中使用了 SMSCRelay ActiveX 组件,当我发送消息时出现的问题包括一些字符,例如 (@^_) 我收到带有问号而不是这些字符的消息。
我的代码和危险的解决方案:(
if MessageIsArabic then
MsgEncoding := etUCS2Text
else
MsgEncoding := et7bitText;
MessageSendResult := FSMPPConnection.SubmitMessageEx(Mobile,1,1,SenderOrigTon,OrigNpi,Msg,MsgEncoding,FPartUDH,m_ReqReport,now,now+1,'','',ProtID,OutMessageID );
我的旧解决方案是检查消息是否包含这些字符集编码到 etUCS2Text 但我发现提供者报告和我们的报告之间的区别在于计数。
if MessageArabic then
MsgEncoding := etUCS2Text
else
begin
MsgEncoding := et7bitText ;
if pos('@',FInMessage.OutMessage)>0 then MsgEncoding := etUCS2Text ;
if pos('#',FInMessage.OutMessage)>0 then MsgEncoding := etUCS2Text ;
if pos('^',FInMessage.OutMessage)>0 then MsgEncoding := etUCS2Text ;
if pos('_',FInMessage.OutMessage)>0 then MsgEncoding := etUCS2Text ;
end;
包含这些字符时英文消息中的问题
组件中可用的编码
et7bitText
et8bitHexadecimal
etUCS2Text
etISO88591
etISO88595
etISO88598
etASCIIText
etWAPPushOrMMS
请任何帮助将不胜感激