【发布时间】:2012-12-31 03:12:06
【问题描述】:
我写了一个 c++ 程序,当我在 ansi-term 中使用 g++ 编译它时,显示了一些奇怪的字符:
如果需要,错误是我没有声明变量 n。我该如何纠正这个问题?
【问题讨论】:
-
看起来您正在使用
gccfilter或类似的东西来为您的输出着色。这些是终端转义序列。
标签: emacs elisp ascii emacs23 emacs24
我写了一个 c++ 程序,当我在 ansi-term 中使用 g++ 编译它时,显示了一些奇怪的字符:
如果需要,错误是我没有声明变量 n。我该如何纠正这个问题?
【问题讨论】:
gccfilter 或类似的东西来为您的输出着色。这些是终端转义序列。
标签: emacs elisp ascii emacs23 emacs24
啊!测试了这个...
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
问题解决了!!!
【讨论】:
看起来gcc 输出包含 UTF-8“智能引号”,并且您的终端未设置为显示 UTF-8。简单的解决方法是在 Emacs 中使用不支持智能引号的 locale,这应该强制 gcc 回退到纯简 ASCII 引号;更复杂的修复方法是修复 Ansi-Term 缓冲区中的终端模式以正确显示这些内容。
【讨论】:
这些很可能是颜色转义序列。 emacs 有一个模式,您可以使用 ansi-color-for-comint-mode-on 函数启用该模式。
【讨论】: