Почему символы ANSI не работают в PuTTY/Debian?
Удивительное приложение tree
, который я установил в Debian с apt-get install tree
, имеет возможность рисовать свой вывод с использованием графики ANSI. Его вывод теперь выглядит так:
, tqq node_modules x tqq coffee-script х ткк эко х ткк экспресс х ткв навсегда х стилус mqq tqq package.json MQQ SRC mqq daemontest.coffee
Это явно неправильно. Это мои LANG=en_GB.UTF-8 UTF-8
а также LC_ALL=C
переменные env. PuTTY также ожидает UTF-8. Если я изменю PuTTY на "Использовать кодировку шрифта", тогда tree -A
выглядит правильно, однако npm list
тогда сломается и будет выглядеть так:
â € œâ € € coffee-script@1.2.0 ├⠀ € ¬ eco@1.1.0-rc-3 │ └─ € strscan@1.0.1 â € â € ¬ express@2.5.5 │ ├⠀┬ connect@1.8.5 │ │ ”” â € € formidable@1.0.8 │ ├⠀ € mime@1.2.4 │ ├⠀ € mkdirp@0.0.7 │ └─⠀ € qs@0.4.0 ...
Все эти вещи должны работать правильно, поэтому я предполагаю, что мои настройки где-то не так. Может ли кто-нибудь помочь мне настроиться именно там, где?
РЕДАКТИРОВАТЬ: мой env
теперь выглядит так. Проблема все еще там
root@chu:~# env TERM= шпаклевка SHELL=/bin/bash SSH_CLIENT=** Цензура ** SSH_TTY=/dev/pts/1 USER=root LS_COLORS=rs=** Удалено из-за текстовой стены ** PYTHONBREW_ROOT=/usr/local/pythonbrew MAIL=/var/mail/root PATH=/usr/local/pythonbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/root LANG=en_GB.UTF-8 SHLVL=1 HOME=/root LANGUAGE=en_US:en LS_OPTIONS=- цвет =auto PYTHONPATH=:/root/pymodules LOGNAME=root SSH_CONNECTION=** Цензура ** _=/ USR / бен / окр
1 ответ
Первая проблема заключается в том, что у вас установлено значение $LC_ALLC
, Если вы установите $LC_ALL, он переопределит все остальные настройки локали, включая $LANG. Поскольку "C" локаль использует ISO-8859-1, tree
не будет знать о доступности Unicode и попытается переключиться на графическую кодовую страницу VT100 (есть четыре переключаемые кодовые страницы), что PuTTY отказывается делать, ожидая UTF-8. Чтобы это исправить, прекратите установку LC_ALL в вашей среде и tree
будет использовать графику Unicode.
Вторая проблема заключается в том, что ваша переменная $ LANG неверна - вам не нужно указывать кодировку дважды. Задавать LANG=en_GB.UTF-8
чтобы исправить это.
Третья проблема заключается в том, что вызаставляетеtree
использовать графику VT100.Не используйте -A
вариант.
Держите PuTTY настроенным для UTF-8.
(npm
на это не влияет, потому что он жестко запрограммирован для использования графики Unicode независимо от локали.)