升级到 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 引号 ( `->'
)。