在logfile.log中检测未知字符



有人知道"字符"是什么意思和它的格式吗?

我有时在我的logfile.log (ASCII格式)文件中有这个字符。

为了方便搜索引擎,我们在这里讨论的符号(*)是菱形内的一个问号。(菱形俗称菱形)

是一个符号,或者可能是一个字体字形,但严格地说,不是一个字符。它是一种通用符号,许多字体都使用它来表示它们实际上没有您试图打印的某个字符的字体字形。字体只是将它没有字形的所有字符映射到该字体字形,以便我们人类可以注意到某些地方出了问题并需要排除故障。

所以,底线是,仅通过查看——我们无法判断它是哪个字符。

但是,我们可以通过更深入地查看文本文件来发现更多信息。

正确的方法是获取该文本文件的十六进制转储。在过去的好日子里,每个程序员都有一个十六进制转储工具,但是现在每个人都在摸索文本格式的数据,十六进制转储工具已经过时了,所以你可能没有一个。幸运的是,大互联网可以来救援:

复制您感兴趣的字符,并将其粘贴到将文本转换为十六进制的工具中,例如https://online-toolz.com/tools/text-hex-convertor.php(忽略糟糕的英语,以及它是用PHP编写的事实;程序员来自世界各地,而程序员确实会做出糟糕的人生选择。

对于你在这篇文章中包含的特定字符,文本到十六进制转换器给出efbfbd。这个位模式没有意义,它可能意味着一些损坏的数据或未初始化的内存被写入了日志文件。

还请注意,您可能认为日志文件是ascii编码的,但可能不一定是这样;它可能具有UTF-8编码,这与最常用的前126个字符的ASCII相同。无论如何,您用来查看日志文件的实用程序很可能是unicode感知的,因此它可能将您的日志文件解释为UTF-8,但这没有任何区别,因为efbfbd在UTF-8或ASCII中都是无意义的。

最新更新