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

\2008 進数のエスケープ シーケンスです。16 進数でâ\200\230は isE2 80 98で、これが U+2018 (LEFT SINGLE QUOTATION MARK) が UTF-8 でエンコードされる方法です。同様に、â\200\231U+2019 (RIGHT SINGLE QUOTATION MARK) です。これは、 が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 に答える