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

标签 powershell unicode mocha.js 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 控制台中正确显示?

最佳答案

通过将字符粘贴到 LinqPad 中,我能够确定它们是 'HEAVY CHECK MARK' (U+2714)'HEAVY MULTIPLICATION X' (U+2716) 。看起来 Windows 7 中提供的任何控制台字体(Consolas、Lucida Console 或 Raster Fonts)都不支持这两个字符。事实上,Windows 7 附带的所有字体,只有少数支持这些字符(Meiryo、Meiryo UI、MS Gothic、MS Mincho、MS PGothic、MS PMincho、MS UI Gothic 和 Segoe UI Symbol)。以“MS”开头的字体都是固定宽度(等宽)字体,但它们在控制台典型的字体大小下看起来都很糟糕。其他的都被淘汰了,因为控制台需要固定宽度的字体。

所以您需要下载字体。我喜欢 DejaVu Sans Mono ——它是免费的,在控制台尺寸上看起来不错,很容易区分 0O 以及 1I 来自 l,它有各种奇特的 Unicode 符号,包括 Mocha 使用的检查和 X。

Sample of the DejaVu Sans Mono font

不幸的是,安装新的控制台字体有点麻烦,但这是可行的。 (步骤改编自 this post by Scott Hanselman ,但扩展为包括 000 的不明显的微妙之处。)

步骤:

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

现在 Mocha 的输出将展现其全部荣耀。

Screenshots of Mocha output displaying correctly in a Windows console

关于powershell - 如何让 Mocha 的 Unicode 输出在 Windows 控制台中正确显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817926/

相关文章:

powershell - 如何以编程方式更新 DNS 记录

python - Unicode 编码错误 Python - 解析 XML 无法编码字符 (Star)

javascript - 业力 + Webpack2 : module parse failed and imports not found

windows - 在 GAC 中注册 DLL(CMD 或 PowerShell)

azure - 从规模集中的 VM 检索应用程序运行状况

powershell - 如何使用 PowerShell 更改包含特定字符串的文件的文件扩展名

python - 为 couchdb 指定附件编码

c++ - C11 编译。翻译阶段 #1 和 #5。通用字符名称

javascript - 在 JS 中测试日期

javascript - 使用 Mocha 设置 JSDOM