C#过滤控制字符(SOH、DLE、EOT)等

        从设备采集到信息,有时候结尾会带些特殊字符,经常还是不可见字符,不过复制到Notepad++,会显示(SOH)(DLE)(EOT)等,查询后才知道这些是ASCII中的控制字符。

       控制字符(Control Character),出现于特定的信息文本中,表示某一控制功能的字符。

    在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。

      SOH是start of heading的缩写:

     

       C#采集后存储到数据库中,需要过滤这些字符,代码如下:

       

        /// <summary>
        /// 过滤不可见字符
        /// </summary>
        /// <param name="sourceString">原始字符</param>
        /// <returns>删除后结果</returns>

public string DeleteControlChar(string sourceString)
{
       System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();
       for (int i = 0; i < sourceString.Length; i++)
       {
            int Unicode = sourceString[i];
            if (Unicode > 31 && Unicode != 127)
            {
                sBuilder.Append(sourceString[i].ToString());
            }
       }
     return sBuilder.ToString();
}

参考:

  https://blog.csdn.net/dingxingmei/article/details/7738548 

  https://zhidao.baidu.com/question/40988312.html

   

posted @ 2018-05-07 14:43  SnowSpace  阅读(7498)  评论(0编辑  收藏  举报