从设备采集到信息,有时候结尾会带些特殊字符,经常还是不可见字符,不过复制到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