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

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

tree我在 Debian 中安装了awesome 应用程序,apt-get install tree它具有使用 ANSI 图形绘制输出的选项。它的输出现在如下所示:


tqq 节点模块
x tqq 咖啡脚本
x tqq 生态
x tqq快递
x tqq 永远
x mqq 触控笔
tqq 包.json
mqq 源码
    mqq 守护进程测试.coffee

这显然是错误的。这些是我的LANG=en_GB.UTF-8 UTF-8LC_ALL=C环境变量。PuTTY 也设置为 UTF-8。如果我将 PuTTY 更改为“使用字体编码”,则tree -A看起来正确,但是npm list会中断并看起来像这样:

├──[电子邮件保护]
├─┬[电子邮件保护]
│ └──[电子邮件保护]
├─┬[电子邮件保护]
│ ├─┬[电子邮件保护]
│ │ └──[电子邮件保护]
│ ├──[电子邮件保护]
│ ├──[电子邮件保护]
│ └──[电子邮件保护]
...

这些东西都应该正常工作,所以我猜我的设置有些地方不对。有人能帮我看看到底是哪里不对吗?


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

root@chu:~# 环境
TERM=putty
外壳=/bin/bash
SSH_CLIENT=**已审查**
SSH_TTY=/dev/pts/1
用户=root
LS_COLORS=rs=**由于文本墙而被删除**
PYTHONBREW_ROOT=/usr/local/pythonbrew
邮件=/var/邮件/root
PATH=/usr/local/pythonbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
密码=/root
LANG=en_GB.UTF-8
低压侧电压=1
主页=/root
语言=en_US:en
LS_OPTIONS=--颜色=自动
PYTHONPATH=:/root/pymodules
LOGNAME=root
SSH_CONNECTION=**已审查**
_=/usr/bin/env

答案1

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

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

第三个问题是强迫 tree使用 VT100 图形。请勿使用该-A选项。

保持 PuTTY 也配置为 UTF-8。

npm不受此影响,因为它是硬编码使用 Unicode 图形,而不管语言环境如何。)

相关内容