为什么 ANSI 符号在 PuTTY/Debian 中不起作用?

Hub*_*bro 6 character-encoding putty tree node.js

tree我在 Debian 中安装的很棒的应用程序可以apt-get install tree选择使用 ANSI 图形绘制其输出。它的输出现在看起来像这样:

.
tqq node_modules
x tqq 咖啡脚本
xtqq生态
x tqq快递
x tqq 永远
x mqq 手写笔
tqq 包.json
微信源
    mqq daemontest.coffee

这显然是错误的。这些是 myLANG=en_GB.UTF-8 UTF-8LC_ALL=Cenv 变量。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
││â”─â€可怕@1.0.8
│ ├── mime@1.2.4
│ ├── mkdirp@0.0.7
│└── qs@0.4.0
...

所有这些东西都应该正常工作,所以我猜我的设置在某个地方是错误的。谁能帮我调到准确的位置?


编辑:我env现在看起来像这样。问题依然存在

root@chu:~# env
术语=腻子
外壳=/bin/bash
SSH_CLIENT=**审查**
SSH_TTY=/dev/pts/1
用户=root
LS_COLORS=rs=**因为文字墙而被移除**
PYTHONBREW_ROOT=/usr/local/pythonbrew
邮件=/var/mail/root
PATH=/usr/local/pythonbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
密码=/root
LANG=en_GB.UTF-8
SHLVL=1
家=/root
LANGUAGE=en_US:en
LS_OPTIONS=--颜色=自动
PYTHONPATH=:/root/pymodules
日志名=根
SSH_CONNECTION=**审查**
_=/usr/bin/env

use*_*686 9

第一个问题是您将 $LC_ALL 设置为C. 如果您设置 $LC_ALL,它将覆盖所有其他区域设置,包括 $LANG。由于“C”语言环境使用 ISO-8859-1,tree不会知道 Unicode 的可用性,并会尝试切换到 VT100 图形代码页(有四个可切换的代码页),PuTTY 在期望 UTF-8 时拒绝这样做。要解决此问题,请停止在您的环境中设置 LC_ALLtree使用 Unicode 图形。

第二个问题是您的 $LANG 变量不正确——您不需要两次指定字符集。设置LANG=en_GB.UTF-8来解决这个问题。

第三个问题是你强制 tree使用VT100显卡。不要使用该-A选项。

保持 PuTTY 配置为 UTF-8。

npm不受此影响,因为无论语言环境如何,它都被硬编码为使用 Unicode 图形。)