Windows Terminal (Preview)治好了cmd,powershell的癌症

前言

话说n年前,我想开发一款powershell麻将游戏,可是发现命令行下没法显示麻将牌这种特殊符号。git

通过研究发现,这是4字节的utf16le字符串。而powershell依赖的渲染引擎,只能渲染双字节的,即65535以内的。shell

Linux下的powershell没有这个问题。spa

我给powershell提交了issue,可是没有获得反馈。命令行

随着时间的推移,随着git的普及,unicode字符渲染问题愈来愈严重了,由于git输出中有不少特殊字符串,用户呼声愈来愈高,才引发了ms的重视。也就有了Windows Terminal。code

 

 

命令行渲染引擎

命令行渲染引擎是啥玩意?我之前不知道,如今我知道了。就是conhost.exe。blog

 

简单来说老版本的conhost.exe,只渲染双字节=65535以内的utf16le,4字节的不渲染。游戏

新版本的,对于4字节的扩展字符,如今也渲染了。unicode

具体能够看看Windows Terminal原理介绍。开发

 

这是一个重大+基础的东西,但我不明白为何微软不给旧的系统使用。字符串

要求系统最低版本为:201905月版win10。Win10-18362

在我眼中,这就是在win中新建个conhost2.exe,而后让cmd.exe加参数调用它的问题。

或者新建 conhost2cmd.exe  ,,, conhost2powershell.exe。

 

图示:

 图1

 

图2

 

 

图3 

 

 

结论:

1使用这个新的conhost.exe,或者说使用Windows Terminal (Preview),最大的好处,就是给cmd.exe,powershell.exe,pwsh.exe带来了显示特殊字符。

 

2 不要直接运行cmd.exe,powershell.exe,pwsh.exe,要使用套在Windows Terminal 壳子中的cmd.exe,powershell.exe,pwsh.exe。

相关文章
相关标签/搜索