将Unicode字符打印到PowerShell提示符
我试图设置Mercurial来打印出当前使用PowerShell的存储库的状态。 到目前为止,我有一切工作,但我希望能够打印'☿'到当我在一个存储库的提示。 不幸的是,似乎PowerShell在打印Unicode字符时遇到了一些问题。
在接受的答案是否有一个Windows命令shell将显示Unicode字符? build议Windows 7(我正在使用)附带的PowerShell v2将能够打印Unicode字符,但我似乎无法得到它的工作。 同样,使用chcp 65001
的下一个答案也不起作用。
这仍然是PowerShell的一个缺陷,还是我错过了一些明显的东西?
这不是PowerShell的缺陷。 这是PowerShell.exe使用的Windows控制台子系统的一个缺陷。 控制台子系统不支持Unicode,但代码页可以追溯到DOS时代。 PowerShell V2修补程序通过PowerShell集成脚本环境或PowerShell_ISE.exe提供。 这是一个基于WPF的graphics应用程序,可以轻松处理Unicode字符。
理论上你可以使用chcp或者更改代码页
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850)
以显示不同的字符,但我没有太多运气与此。 您还需要find包含要显示的字符的代码页。
在这里打印半罚款。 Consolas没有该字符的字形,所以我在控制台窗口中看到的是一个替代字形。 但PowerShell接受和打印它就好了,正如您在复制粘贴时所看到的那样。
现在,如果你已经把你的控制台窗口设置为栅格字体,那么这个故事有点不一样,但是PowerShell幸运地具有理智的默认值。
您不能使用默认的PowerShell(即Windows)控制台。 但是,如果使用PowerShell ISE (它提供了自己的控制台),它将起作用。 我不确定这是否能满足您的需求。
Deja Vu Sans Mono在cmd中工作,具有该特性,因此也可以在PowerShell中使用。
顺便说一句,我build议也安装Droid Sans Mono和Courier New,到命令提示符。 然后他们也可以在PowerShell中使用。 cmd支持的单色空间字体并不多。 但是那三个是Deja Sans Mono,Droid Sans Mono和Courier New。
你需要
- 在你的系统中安装包含你的字形的
monospace font
(可能使用字符映射来find合适的字形等),然后 - 将其设置为控制台字体,如下所述: http : //www.watchingthenet.com/how-to-add-and-change-fonts-in-windows-command-prompt.html