Я понимаю, что этой ветке уже почти год, но поскольку я сам столкнулся с этой проблемой после того, как использовал "cat" для отображения содержимого исполняемого файла в Apple Terminal.app, я полагаю, что эта ситуация может повлиять и на будущих пользователей.
В любом случае, насколько я могу судить, странные символы появляются после того, как ASCII-символ "сдвига" (десятичное 14, 0x0E) напечатан. (Ну, слово "напечатано" может не подходить, потому что, по крайней мере, для Terminal.app, это не печатный символ, но я надеюсь, вы понимаете, о чем я.) К счастью, терминал возвращается в нормальное состояние, если печатается символ сдвига ASCII (десятичное 15, 0x0F).
Другими словами, если кто-то написал программу на С, например ...
#include <stdio.h>
int main() {
printf( "\x0F" );
return 0;
}
Это должно вернуть все к норме. Возможно, есть еще более простой способ на другом языке или в оболочке bash, но, надеюсь, вы поняли идею.
По-видимому, это странное поведение - не ошибка, а скорее неясная (для меня, по крайней мере) особенность. Когда я искал информацию, я был направлен на ISO 2022, который, кажется, является основой для того, что делает терминал. Вот статья в Википедии по ISO/IEC 2022.
Я надеюсь, что этот пост был полезен теперь, когда загадка странных персонажей раскрыта.