В некоторых программах, таких как htop
линии и кадры, отображаются неправильно. Вместо этого они отображаются как -
и /
.
Но на другой машине они отображаются правильно в виде правильных строк:
Я не уверен, является ли это проблемой терминала, или, возможно, необходим какой-то пакет.
Если это актуально: моя система Debian Wheezy, мой переводчик bash
и мой эмулятор терминалаgnome-terminal
terminal
character-encoding
Мартин Вегтер
источник
источник
htop
отображение символов ASCII. Однако, если шрифт терминала по умолчанию не является Unicode, то, вероятно, также применяется кодировка, поэтому я добавил это в свой ответ.Ответы:
Ваш лучший пример работает с языком, отличным от Unicode (т.е. ASCII). Проверьте переменную среды $ LANG (попробуйте
export | grep LANG
); вы, скорее всего, не найдете.UTF-8
суффикс. Попробуйте добавить это:Ваш другой пример работает с языком UTF-8, который должен использоваться по умолчанию для последних оболочек. Кажется, он
htop
определяет вашу локаль и отображает символы ASCII или Unicode - поэтому на нижнем рисунке вы видите красивые символы Unicode, в то время как с ASCII вы получаете некоторые довольно временные символы. Я бы предложил изменить локаль машины верхнего изображения на Unicode (см. Locale - Debian Wiki ).Если это не сработает, возможно, проблема в эмуляторе терминала . Кодировка по умолчанию может быть не-Unicode. Измените кодировку по умолчанию вашего эмулятора терминала на UTF-8 (
xfce4-terminal
я нашел ее на вкладке «Дополнительно»). Если вы не можете, возможно, ваш текущий шрифт не поддерживает Unicode: попробуйте изменить шрифт на Unicode.[Странно, я обнаружил, что однажды в сеансе оболочки я изменил свой язык на ASCII,
htop
всегда отображает символы ASCII, даже после его изменения. Это может быть вашей проблемой, если по какой-то причине вы время от времени меняете локаль в своей оболочке.]источник
Странно то, что
htop
используются ncurses, которые могут рисовать линии с / без Юникода. Тем не менее, глядя на исходный код вCRT.c
показывает объяснение:и
CRT_treeStrUtf8
значениеОднако ncurses (любая реализация curses) имеет переносимые символы для них, которые не зависят от того, является ли кодировка UTF-8 или нет. Некоторые приложения (например, диалог «s
--ascii-lines
опция) обеспечивают вариант для использования ASCII рисования линий, но приложение , которое даже не пытаться использовать линию вытяжки , представленную в Ncurses не эффективное использование библиотеки.Короче говоря, когда вы сталкиваетесь с программой, которая ведет себя так, вы должны сообщить об этом разработчикам как об ошибке.
Дальнейшее чтение:
border
,wborder
,box
,hline
,whline
,vline
,wvline
,mvhline
,mvwhline
,mvvline
,mvwvline
- создание проклинает границ, горизонтальные и вертикальные линииdialog
скриншоты ( ни один не требует кодировки UTF-8 для использования рисования линий)источник
LANG
/LC_ALL
включив ожидаемые символы рисования линий Unicodehtop
), это очень интересно. Спасибо, что нашли время, чтобы объяснить это!