GSMComm错误值105不是7位默认字母扩展表的一部分 [英] GSMComm error The value 105 is not part of the 7-bit default alphabet extension table

查看:120
本文介绍了GSMComm错误值105不是7位默认字母扩展表的一部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用GSMComm Lib开发SMS网关应用程序.阅读邮件

SmsDeliverPdu data = (SmsDeliverPdu)pdu;
Output("Message: " + data.UserDataText);

它包含特殊字符(使用BlackBerry手机的自动文本发送) 并引发并捕获了类型为System.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 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;
        }
    }
}

I develop SMS Gateway app, using GSMComm Lib. When read the message

SmsDeliverPdu data = (SmsDeliverPdu)pdu;
Output("Message: " + data.UserDataText);

it contains special character (send using autotext from BlackBerry phone) and throws An exception of type System.ArgumentException occurred and was caught

Below is the log file:

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)

How to solve this case?

解决方案

Solved. I check the string contain 7bit character set or not using this regex:

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

source

code:

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;
        }
    }
}

这篇关于GSMComm错误值105不是7位默认字母扩展表的一部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆