将Unicode字符打印到PowerShell提示符

时间:2011-04-26 20:54:51

标签: unicode windows-7 powershell mercurial

我正在尝试设置Mercurial以打印出我目前使用PowerShell的存储库的状态。到目前为止,我已经完成了所有工作,但是当我在存储库中时,我希望能够将“☿”打印到提示符。不幸的是,PowerShell似乎在打印Unicode字符方面存在一些问题。

Is there a Windows command shell that will display Unicode characters? 的已接受答案中,建议与Windows 7一起提供的PowerShell v2(我正在使用)将能够打印Unicode字符,但我可以'似乎让它发挥作用。同样,使用chcp 65001的下一个答案也不起作用。

这仍然是PowerShell中的缺陷,还是我错过了一些明显的东西?

5 个答案:

答案 0 :(得分:24)

这不是PowerShell缺陷。 PowerShell.exe使用的Windows控制台子系统是一个缺陷。控制台子系统不支持Unicode,而是代码页,而不是可以追溯到DOS时代。 PowerShell V2修复程序通过PowerShell集成脚本环境或PowerShell_ISE.exe提供。这是一个基于WPF的图形应用程序,可以轻松处理Unicode字符。

理论上,您可以使用chcp或

更改代码页
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850)

显示不同的字符,但我没有太多运气。您还需要找到包含要显示的字符的代码页。

答案 1 :(得分:7)

在这里打印半精。 Consolas没有该字符的字形,因此我在控制台窗口中看到的只是替换字形。但PowerShell接受并打印它就好了,正如您在复制粘贴时所看到的那样。

现在,如果你已经将控制台窗口设置为光栅字体,那么故事就会有所不同,但是PowerShell很幸运地有默认设置。

答案 2 :(得分:6)

您无法使用默认的PowerShell(即Windows)控制台。但是,如果您使用PowerShell ISE(提供自己的控制台),它将起作用。我不确定这是否能满足您的需求。

答案 3 :(得分:2)

Deja Vu Sans Mono在cmd中工作并具有该角色,因此它也适用于PowerShell。

Enter image description here

Enter image description here

顺便说一句,我建议在命令提示符下安装Droid Sans Mono和Courier New。然后他们也可以在PowerShell中使用。 cmd支持的单声道间距字体不多。但那些是三个,Deja Sans Mono,Droid Sans Mono和Courier New。

答案 4 :(得分:1)

你需要

  1. 在您的系统中安装monospace font,其中包含您的字形(可能使用字符映射查找合适的字符等) 然后
  2. 将其设置为控制台字体,如下所述:http://www.watchingthenet.com/how-to-add-and-change-fonts-in-windows-command-prompt.html