Почему символы 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 независимо от локали.)

Другие вопросы по тегам