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


    前言

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

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

    Linux下的powershell没有这个问题。

    我给powershell提交了issue,但是没有得到反馈。

    随着时间的推移,随着git的普及,unicode字符渲染问题越来越严重了,因为git输出中有很多特殊字符串,用户呼声越来越高,才引起了ms的重视。也就有了Windows Terminal。

    命令行渲染引擎

    命令行渲染引擎是啥玩意?我以前不知道,现在我知道了。就是conhost.exe。

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

    新版本的,对于4字节的扩展字符,现在也渲染了。

    具体可以看看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。

  • 相关阅读:
    oracle 主键自动地址实现
    解构赋值
    那些朋友那些话系列
    那些朋友那些话
    白鹭记事
    该如何存在
    上海秋季HCC小记
    For the person you never see again
    寻城记
    2013年的国庆
  • 原文地址:https://www.cnblogs.com/piapia/p/11351260.html
Copyright © 2020-2023  润新知