首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GSMComm错误值105不是7位默认字母表的一部分。

GSMComm错误值105不是7位默认字母表的一部分。
EN

Stack Overflow用户
提问于 2014-01-07 06:22:28
回答 2查看 1K关注 0票数 0

我开发的短信网关应用程序,使用GSMComm Lib。当阅读消息时

代码语言:javascript
复制
SmsDeliverPdu data = (SmsDeliverPdu)pdu;
Output("Message: " + data.UserDataText);

它包含特殊字符(使用BlackBerry电话的自动文本发送),并引发System.ArgumentException类型发生并被捕获的异常。

下面是日志文件:

代码语言:javascript
复制
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)

如何解决这个案子?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-08 08:34:00

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

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

来源

代码:

代码语言:javascript
复制
public static bool IsInputContainNonGSM7BitCharacterSet(string value)
{
    string GSM_7_BIT_CHARACTER_SET = " @£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞ^{}\\[~]|€ÆæßÉ!\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
    char letter = default(char);

    for (int i = 0; i < value.Length; i++)
    {
        letter = value[i];

        if (GSM_7_BIT_CHARACTER_SET.IndexOf(letter) == -1)
        {
            return true;
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-07 17:50:27

我没有使用data.UserDataText,而是使用了

代码语言:javascript
复制
TextDataConverter.SevenBitToString(TextDataConverter.OctetsToSeptetsStr((message.Data as SmsDeliverPdu).UserData), false)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20965174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档