Странные символы в терминале во время ошибки компиляции
(Речь идет не об ошибке компиляции, а о настройке терминала Linux.)
Во время любой ошибки компиляции оператор ошибки неправильно отображает фрагменты кода:
In member function â:
error: â was not declared in this scope
Есть ли настройка, чтобы мой терминал правильно показывал:
In member function `foo()':
error: `endl' was not declared in this scope
Дополнительная информация: Это правильно отображается в режиме компиляции Emacs, но даже сохранение этого буфера во временный файл и чтение его в командной строке приводит к появлению вышеуказанных символов. Чтение этого файла в Vim показывает, что странные символы представляют более одного столбца текста.
2 ответа
I think you should first check the locale settings with:
locale
Если он не выровнен с набором символов файла, то вы можете получить ошибки, как таковые.
file yoursrcfile
должен предоставить вам необходимую информацию.
Существует также случай, когда ваш компилятор работает с другой локалью. Вы можете обойти это, установив
export LC_ALL=en_US
для вашей сессии Bash. Это также может быть размещено перед командой компиляции. например
LC_ALL=en_US gcc -o outfile srcfile.c
Но эффект в этом случае будет только на последующую команду.
Другой случай, что, возможно, ваш исходный код, возможно, был отредактирован в Windows? В любом случае, он может содержать некоторые странные символы по какой-то причине.
Вы должны проверить это в Vim, включив, чтобы показать все символы
:set invlist
Надеюсь это поможет!
Если переменная окружения LANG
LANG=en_US.UTF-8
затем в меню перевода окна PuTTy, в
"Полученные данные, в которых предполагается набор символов", выберите
"UTF-8".
или установите LANG просто
LANG=en_US
или же
unset LANG