話說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。