Python运行py文件时Unicode下划线Windows环境显示偏移问题
问题原因
- 代码中Unicode组合下划线字符
\u0332的位置写反了:这类组合标记的生效规则是给它前面紧邻的字符添加对应样式,你当前代码里写的是'\u0332y',相当于把下划线绑定到了字母y前面的空格上。IDLE的文本渲染基于Tkinter做了容错处理,能自动修正组合字符的顺序错误,所以显示正常;双击py文件拉起的是Windows默认控制台conhost.exe,它严格遵循Unicode渲染规则执行,就会把下划线画在y前面的空格位置,出现左偏。 - 双击py文件直接运行的操作本身没有错误,这种运行方式和IDLE的运行环境用的是完全不同的文本渲染引擎,显示效果存在差异是正常现象。
修复方案
- 调整组合字符的位置,把下划线标记放到需要添加下划线的字符后面,修正后的代码如下:
Yes = "es" No = "o" # \u0332放在目标字符y、n的后方,而非前方 print('Do you want to flip another coin? ' + 'y\u0332' + Yes + ' or ' + 'n\u0332' + No)
- 如果调整字符顺序后仍存在渲染异常,可以打开命令提示符的属性设置,取消勾选「使用旧版控制台」;也可以将py文件的默认运行终端改为Windows Terminal,新版终端对Unicode组合字符的兼容性更好,显示效果更稳定。
- 如果不想纠结Unicode字符的兼容问题,也可以安装
colorama这类控制台样式处理库,直接调用库内置的下划线样式接口,不需要手动拼接组合字符,跨环境的兼容性会更好。
内容的提问来源于stack exchange,提问作者tigers486
相关产品推荐
相关产品推荐

