首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在python3 REPL挂起gnome终端中打印(\x9f)?

为什么在python3 REPL挂起gnome终端中打印(\x9f)?
EN

Ask Ubuntu用户
提问于 2021-05-04 13:58:26
回答 1查看 63关注 0票数 0

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。

EN

回答 1

Ask Ubuntu用户

发布于 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代码。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1336030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档