Это связано с другим, на который я недавно отвечал, но принятый ответ в этом случае не подходит:
терминал: отображение специальных символов
Первый снимок экрана ясно показывает, что htop
запущен на терминал, в котором кодировка UTF-8 не поддерживается, потому что неправильно нарисованный текст должен быть символами рисования линий. Последний показывает использование символов ASCII для имитации символов рисования линий.
Настройка TERM
не имеет значения, потому что htop
не использует описание терминала, чтобы решить , как рисовать линии. Он использует переменные среды вашей локали, чтобы выбрать между двумя жестко запрограммированными схемами рисования линий. Он использует вызов nl_langinfo
в this ifdef :
#ifdef HAVE_LIBNCURSESW
if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
CRT_utf8 = true;
else
CRT_utf8 = false;
#endif
, чтобы решить (на основе LC_ALL
, LC_CTYPE
и т. Д.), Что ваш терминал поддерживает UTF-8 и настроен для этого.
Дополнительная литература: