当我注意到这个问题时,我正在研究一个名为 urwid 的 Python 库。在原生 Ubuntu 中不会发生这种情况。我将其归结为以下几点:
当我运行以下 python3 程序时,它会打印前 15 个 unicode 字符:
for i in range(0, 16):
print(i, chr(i))
Windows ubuntu 子 shell 打印垃圾字符,但本机 ubuntu 机器不打印。我试图让 Windows 子 shell 不打印这些垃圾字符。有什么办法吗?我尝试在 Windows 子 shell 中下载并安装源代码专业版和 ubuntu mono 字体,但这只会改变打印的垃圾字符。
答案1
这会受到终端仿真器的影响。在这些情况下,您打印的是一组控制字符,其中一些是可打印的,但大多数是不可打印的。一般来说,除非您对这些字符在终端上的效果感兴趣,否则最好不要将这些字符发送到屏幕上,如果您不想将它们显示在屏幕上,则应避免打印它们。
最有可能的是,区别在于原生 Ubuntu 终端仿真器(可能是 GNOME 终端)不会将这些字符打印到屏幕上,而 Windows 终端会。两者都是有效且正确的响应。因此,如果您不想看到它们并且不想更改代码,则需要切换到没有此行为的其他终端仿真器。