Странные символы в терминале во время ошибки компиляции

(Речь идет не об ошибке компиляции, а о настройке терминала 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
Другие вопросы по тегам