4

我正在运行我的 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

4

2 回答 2

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

于 2012-08-14T15:11:10.253 回答
0

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

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

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

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

✖
HEAVY MULTIPLICATION X
Unicode: U+2716, UTF-8: E2 9C 96
于 2012-08-10T08:27:55.727 回答