使用 Linux(特别是 Fedora)作为我的主要工作站,我有时注意到奇怪的不可打印字符,如以下屏幕截图所示(第一张图片的左下角和第二张图片的左上角):
在上图中,不可打印的字符出现在带有 bash shell 的 gnome-terminal 中。我因黑客攻击而退出 ipython 交互式 shell sys.stdin.close()
。
上图中,角色出现在用firefox打开的网页中,具体来说RFC 822文本文件,位于该 RFC 目录之前。
我很好奇,想知道它们是什么。我推断这些是 Unicode 的某种表示形式。我对吗?如果是这样,这种符号是在哪里定义的?这叫什么?
答案1
方框通常用于当前字体中不存在的字符。里面的代码是两字节的UTF-8字符代码。现代终端是 UTF8,因此如果您尝试将一些二进制数据输出到终端,您可能会收到此消息。似乎你对 python 做了一些非常奇怪的事情,并且 python 向屏幕输出了一些垃圾,这些垃圾被解释为未知字符,并且你得到了一些 utf-8 垃圾。您总是可以使用“cat /dev/urandom”获得类似的随机垃圾。
答案2
在 Firefox 屏幕截图中,您会看到 0x0C 字符,或者在ASCII码,换页字符,打印机继续新一页的指令。请参阅屏幕截图。我把它标记为浅蓝色。它位于 UDel-Relay 和 Standard 之间,在该代码之间我看到许多 0A 字符(换行符)和一个 20(空格)和 0C。您会看到该编辑器以浅灰色显示这些字符,这意味着它们是非打印的。
我做了什么:我保存了文件。然后打开 Jedit,并打开其十六进制编辑器。这是一个可以在 Jedit 中安装的插件。可能还有很多其他十六进制编辑器,但这是我所知道的,而且很容易使用。
这并不能解释你在 Bash 中看到的内容,但就像 Terdon 所说,这可能是二进制、unicode 或不可打印的 ASCII 字符......