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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM