控制台显示来自 gcc wongly 的引号字符

控制台显示来自 gcc wongly 的引号字符

升级到 debian wheezy 后,我的文本控制台在应该有引号的地方显示问号

在 XI 下正确看待事物

window.cpp:1056:21: error: base operand of ‘->’ is not a pointer

但控制台显示

window.cpp:1056:21: error: base operand of ?->? is not a pointer

如果我删除该文件中除引号之外的所有内容并将 xy 放在它周围(以更容易地发现它),那么 emacs hexl-mode 会告诉我这是这个字符

 00000000: 78e2 8098 790a                           x...y.

我理解 78 (x)、79(y) 和 0a (LF),但我很难相信像引用这样简单的东西需要三个 unicode 字节。

我也尝试过

dpkg-reconfigure console-setup

并设法产生更多不可读的字符,但无法正确看到引号。我可以毫无问题地输入单引号和联机帮助页,一切看起来都很好,所以我不知道应该归咎于 gcc 还是控制台。

答案1

花哨的引号字符‘’是 Unicode 字符 U+2018 和 U+2019(各一个 Unicode 字符)。它们的 UTF-8 编码分别是 3 字节序列,e2 80 98 和 e2 80 99。我不知道你为什么难以相信这一点。

显然您的环境指示 UTF-8 语言环境。运行locale显示相关环境变量。您的控制台似乎已设置为显示 UTF-8,但字体不包含这些字符因此您会看到?

如果切换到非 UTF-8 语言环境,gcc 将改用 ASCII 引号 ( `->')。

相关内容