ASCII码中的不可见字符

[软件开发] 季雨林 2019/7/30 13:23:51

接上一篇:https://www.opengps.cn/Blog/View.aspx?id=392

关于控制台复制文本被截断,不能全部复制出来的问题。这是由于ASCII编码字符的“不可见字符”导致,不可见字符为控制字符,例如换行,回车等等。


socket通信开发中,由于发布在公网,所以会收到各种各样的数据包(公网环境下各种扫描器等工具也会连接到业务端口)

其中收到过一个ascii数据包,其中包含ascii码的控制字符,于是导致我不能从控制台有效的完整复制出全部日志。所以今天找了解决方案,就是替换掉这些不可见的字符为指定的字符。

本来是想选用 问号“?” 来标识这个位置是不可见字符。(注意,这里选取的时候,我需要确认我自己的业务数据包不包含“?”,不然会把这个业务的问号跟错乱数据包的问号混淆)

后来干脆直接忽略掉不可见字符


然后我找了个办法过滤出来,C#代码如下,兼容Unicode:

/// <summary>
/// 删除不可见字符
/// </summary>
/// <param name="sourceString">原始字符</param>
/// <returns>删除后结果</returns>
public static string DeleteUnVisibleChar(string sourceString)
{
	StringBuilder s = new StringBuilder(131);
	for (int i = 0; i < sourceString.Length; i++)
	{
		int Unicode = sourceString[i];
		if (Unicode >= 16)
		{
			s.Append(sourceString[i].ToString());
		}
	}
	return s.ToString();
}



原文地址: https://www.opengps.cn/Blog/View.aspx?id=395 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示