C# GSMComm错误值105不是7位默认字母扩展表的一部分

C# GSMComm错误值105不是7位默认字母扩展表的一部分,c#,gsm,sms-gateway,C#,Gsm,Sms Gateway,我使用GSMComm库开发SMS网关应用程序。当你读到留言时 SmsDeliverPdu data = (SmsDeliverPdu)pdu; Output("Message: " + data.UserDataText); 它包含特殊字符(使用黑莓手机的自动图文集发送) 并引发System.ArgumentException类型的异常。发生并捕获了ArgumentException 以下是日志文件: Type : System.ArgumentException, mscorlib, Ver

我使用GSMComm库开发SMS网关应用程序。当你读到留言时

SmsDeliverPdu data = (SmsDeliverPdu)pdu;
Output("Message: " + data.UserDataText);
它包含特殊字符(使用黑莓手机的自动图文集发送) 并引发System.ArgumentException类型的异常。发生并捕获了ArgumentException

以下是日志文件:

Type : System.ArgumentException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : The value 105 is not part of the 7-bit default alphabet extension table.
Source : PDUConverter
Help link : 
ParamName : 
Data : System.Collections.ListDictionaryInternal
TargetSite : Char SevenBitExtensionToChar(Byte)
Stack Trace :    at GsmComm.PduConverter.TextDataConverter.SevenBitExtensionToChar(Byte b)
   at GsmComm.PduConverter.TextDataConverter.SevenBitToString(String s, Boolean throwExceptions)
   at GsmComm.PduConverter.PduParts.DecodeText(Byte[] userData, Byte dataCodingScheme)
   at GsmComm.PduConverter.SmsPdu.get_UserDataText()
   at GTMP.PresentationTier.Win.SMSGateway.frmSMSGateway.ShowMessage(SmsPdu pdu)
   at GTMP.PresentationTier.Win.SMSGateway.frmSMSGateway.ReadMessage()
   at GTMP.PresentationTier.Win.SMSGateway.frmSMSGateway.frmSMSGateway_Load(Object sender, EventArgs e)
如何解决这个问题?

已解决。 我检查字符串是否包含7位字符集,是否使用此正则表达式:

"^[A-Za-z0-9 \\r\\n@£$¥èéùìòÇØøÅå\u0394_\u03A6\u0393\u039B\u03A9\u03A0\u03A8\u03A3\u0398\u039EÆæßÉ!\"#$%&'()*+,\\-./:;<=>?¡ÄÖÑܧ¿äöñüà^{}\\\\\\[~\\]|\u20AC]*$";

代码:

public静态bool IsInputContainNonGSM7BitCharacterSet(字符串值)
{
字符串GSMè7位字符集=“@$”è249;èèèèèèè249;èèèèèèèèè229;Δèèèèèèèèèèèèèèèèèèèè;
字符字母=默认值(字符);
for(int i=0;i
我使用了

TextDataConverter.SevenBitToString(TextDataConverter.OctetsToSeptetsStr((message.Data as SmsDeliverPdu).UserData), false)

您好,我遇到了同样的问题,但值为15和99…我知道您使用了正则表达式来解决它,但您能更好地解释一下您是如何使用正则表达式的吗?我正在开发与您几乎相同的东西,但我还不是编码专家,所以我有点困在这里…如果您能帮助我,我将不胜感激!提前谢谢您。@JoãoSilva i u更新答案,包括我的代码以检查消息是否包含7位字符,希望它能帮助您非常感谢Willy:)@Willy您能否再次更新您的问题,根据您的答案,使用
SmsDeliverPdu data=(SmsDeliverPdu)pdu;输出(“消息:“+data.UserDataText”);
TextDataConverter.SevenBitToString(TextDataConverter.OctetsToSeptetsStr((message.Data as SmsDeliverPdu).UserData), false)