xterm不会挂。echo -e '\x9f‘不挂在xterm或gnome终端上。非REPL python3 (3.6、3.8、3.9试过)截断字符串,但不挂起。同样适用于IPython 7.13.0
Gnome终端版本为3.36.2
那怎么回事?我在他们的bug跟踪器中找不到与此相关的Python或Gnome终端的bug。
发布于 2021-05-13 22:01:06
python3 3‘S print('\x9f')打印U+009F字符的UTF-8编码版本(假设您的区域设置为UTF-8,这是一个相当合理的假设)。这与echo -e '\x9f'打印的单个0x9F字节不同,后者是无效的UTF-8。
U+0080 ..U+009F是控制字符,可能导致后续数据被解释为参数,而不是显示字母。一些终端模拟器(例如gnome-终端)甚至在UTF-8中也支持这些控制字符,而另一些终端模拟器(例如xterm)在UTF-8中拒绝它们,并且只在这种编码中识别它们的7位干净的对应方。哪一个是正确的可能是有争议的。
底线是:永远不要将无法打印的东西打印到终端(根据iswprint()或它的等价物),除非您确切知道自己在做什么(例如,您的明确意图是打印一个转义序列)。并坚持7位清洁的C0控制代码,而不是问题的C1代码。
https://askubuntu.com/questions/1336030
复制相似问题