摩卡测试输出字体丢失了吗?

时间:2012-08-04 15:03:29

标签: unit-testing node.js unicode console mocha

我正在运行下面的Mocha单元测试(带输出)

[jiewmeng@JM Tickle]$ cake test-ui
path.existsSync is now called `fs.existsSync`.


  hello
    ��� should pass 
    ��� should pass 2 

  Home page
    ��� should have a title of Express (72ms)


  ��� 3 tests complete (77ms)

正如你所见(希望如此),我有“?”而不是我期望的蜱/十字架?我想我缺少一些字体?他们是哪一个?我在Arch Linux上

更新

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

字体是DejaVu Sans Mono Book

2 个答案:

答案 0 :(得分:3)

可能的问题是您的编码不是utf-8。

尝试在终端中运行locale。如果你支持utf-8,你应该看到类似的东西:

[ ~ ]
➜ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
[ ~ ]
➜ 

(我在OSX上,所以我的输出可能有更多或更少的变量;需要注意的重要事项是en_US.UTF-8值。

如果没有,您可能想尝试在配置中取消注释(或添加)一行:

export LANG=en_US.UTF-8

根据您的系统,相应的配置文件可能是以下之一:

  • /etc/rc.conf#< = Arch Linux
  • 的/ etc /环境
  • /etc/profile.d/lang.sh

这将改变所有用户的编码,但理论上您也可以通过将该行添加到以下某个位置来为您的用户进行更改:

  • 〜/ .pam_environment
  • 〜/ .profile中

我可能能够提供更多了解您的系统(操作系统,版本等)的信息。

您可能还想看到:https://unix.stackexchange.com/questions/22435/how-to-fix-character-encoding-in-bash-arch-linux

答案 1 :(得分:0)

要了解终端使用的编码,您可以查看/usr/share/xsessions/06xfce4.desktop(来源:XFCE faq)。

查看mocha source它似乎不是字体问题,因为它们只是将字符设置为UTF-8字符本身。此外,源只是表明,无论何时设置字体,他们都会使用类似于'helvetica, arial, sans-serif'的内容,这可能会默认为系统上的字体,而不支持字符。 (来源:find . -iname "*.*" -exec grep -Hn "font" {} \;关于源代码 - 他们似乎也使用font:12px monaco, monospace;在css中,但据我所知,这与控制台输出没有任何关系。)

尝试找出您的终端使用的字体或系统上的'helvetica,arial,sans-serif'默认值。 (可能最容易检查的方法是使用css。)

仅供参考:他们似乎使用的x符号:

✖
HEAVY MULTIPLICATION X
Unicode: U+2716, UTF-8: E2 9C 96