如何在Windows控制台中正确显示Mocha的Unicode输出?

时间:2012-03-22 07:16:45

标签: powershell unicode mocha windows-console

当我运行Mocha时,它会分别尝试为通过或失败的测试运行显示复选标记或X.我见过Mocha输出的精美截图。但这些截图都是在Mac或Linux上拍摄的。在Windows的控制台窗口中,这些字符都显示为一个不起眼的空框字符,经典的“嗯?”字形:

Screenshot of Mocha in the Windows console, with a box character instead of the expected check mark

如果我在控制台窗口中突出显示文本并将其复制到剪贴板,我会看到实际的Unicode字符;我可以将花哨的字符粘贴到Web浏览器的文本框中,它们渲染得很好(✔,✖)。所以Unicode输出正好进入控制台窗口;问题是控制台窗口没有正确显示这些字符。

如何解决这个问题,以便所有Mocha的输出(包括✔和✖)在Windows控制台中正确显示?

2 个答案:

答案 0 :(得分:25)

通过将字符粘贴到LinqPad,我能够发现它们是'HEAVY CHECK MARK' (U+2714)'HEAVY MULTIPLICATION X' (U+2716)。看起来在Windows 7中可用的任何控制台字体(Consolas,Lucida控制台或光栅字体)中都不支持任何字符。事实上,所有中出现的Windows 7附带的字体,只有极少数人支持这些角色(Meiryo,Meiryo UI,MS Gothic,MS Mincho,MS PGothic,MS PMincho,MS UI Gothic和Segoe UI Symbol)。以“MS”开头的那些都是固定宽度(等宽字体)字体,但它们在控制台典型的字体大小上看起来都很糟糕。其他人都出局了,因为控制台需要固定宽度的字体。

所以你需要下载一个字体。我喜欢DejaVu Sans Mono - 它是免费的,它在控制台大小方面看起来很好,很容易告诉0的{​​{1}}和O的{​​{1}}来自1,它有各种奇特的Unicode符号,包括Mocha使用的支票和X.

Sample of the DejaVu Sans Mono font

不幸的是,安装新的控制台字体有点痛苦,但它是可行的。 (步骤改编自this post by Scott Hanselman,但扩展到包括I的非显而易见的微妙之处。)

步骤:

  1. Download the DejaVu fonts.解压缩文件。进入刚刚解压缩的“ttf”目录,选择所有文件,右键单击并“安装”。
  2. 运行Regedit,然后转到l
  3. 添加新的字符串值。给它一个名字,它的字符串比已经存在的最长的零字符串长一个零。例如,在我的Windows 7安装中,已经有一个名为000的值和一个名为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont的值,因此我必须将新名称命名为0
  4. 双击新值,并将其值设置为00
  5. 重新启动。 (是的,这一步是必要的,至少在操作系统之前,包括Windows 7。)
  6. 现在您可以打开控制台窗口,打开窗口菜单,转到默认值>字体选项卡和“DejaVu Sans Mono”应该在字体列表框中可用。选择它然后确定。
  7. 现在Mocha的输出将显示出它的所有荣耀。

    Screenshots of Mocha output displaying correctly in a Windows console

答案 1 :(得分:7)

更新:此问题现已修复。从Mocha 1.7.0开始,后备用于默认控制台字体中不存在的符号(√而不是✔,×而不是✖等)。它并不像它可能的那样漂亮,但它确实胜过空盒占位符。

有关详情,请参阅相关的提款请求:https://github.com/visionmedia/mocha/pull/641