3

当我从 emacs 中的 shell/eshell/term 运行编译指令时,变量的名称在 shell 中显得很奇怪。

这是一个示例代码(有一些随机错误)和我编译时的输出:

#include iostream
#include cstdlib


int main (void)
{
cscdsd ;//some random error 
return ;
}
//shell o/p:
g++ new.cc 
new.cc: In function â\200\230int main()â\200\231:
new.cc:7: error: â\200\230cscdsdâ\200\231 was not declared in this scope
new.cc:8: error: return-statement with no value, in function returning â\200\230intâ\200\231
~/codes $ 

我发现 \200\230 和 \200\231 表示变量或函数名称的开始和结束。有什么想法会发生什么或如何摆脱它?

4

2 回答 2

7

\200是一个八进制转义序列。在十六进制中,â\200\230isE2 80 98是 U+2018(左单引号)以 UTF-8 编码的方式。同样,â\200\231是 U+2019(右单引号)。这就是g++发出 UTF-8 并且 Emacs 将其解释为 ISO-8859-1 时发生的情况。

您可能需要设置default-process-coding-system为不同的值。尝试(在你的 ~/.emacs 中):

(setq default-process-coding-system '(utf-8-unix . utf-8-unix))

还有其他方法可以告诉 Emacs 期望什么样的编码系统。阅读变量default-process-coding-system&process-coding-system-alist和函数universal-coding-system-argument&的文档set-buffer-process-coding-system

于 2012-04-29T22:32:20.390 回答
1

文本编码应该是LANG环境变量的一部分。
export LANG=en_US.UTF-8应该修复。
在 Ubuntu 系统上,将其更改为/etc/default/locale.

于 2015-12-20T07:20:40.543 回答