为什么 bash 不能显示 æ、ø 和 å 等符号?

Hub*_*bro 1 linux debian character-encoding putty utf-8

我有一个名为 æøå.js 的文件(只是一个示例),当我ls在存储它的目录中运行时,我得到

root@chu:~/projects/someproject/server# ls src
a.js b.js ??????.js

所以看起来这样的符号不能显示。PuTTY 设置为期望 UTF-8,我env看起来像这样

术语=xterm
外壳=/bin/bash
用户=root
LANG=en_GB.UTF-8
SHLVL=1
家=/root
LANGUAGE=en_US:en
LS_OPTIONS=--颜色=自动
PYTHONPATH=:/root/pymodules
日志名=根
_=/usr/bin/env

(我已经从输出中删除了一些东西,因为它们无论如何都不可能相关)

但事情是这样的;当我打开一个文件时,vim我可以毫无问题地输入并查看所有这些符号。所以问题显然只是在 shell/bash 中。我可以提供任何允许 bash 显示这些符号的设置吗?有人也可以解释为什么它现在不能使用 UTF-8 吗?


编辑:这是treeæøå.js 的显示方式

|-- 源代码
| |-- a.js
| |-- b.js
| `-- \303\246\303\270\303\245.js

use*_*686 7

正如我在前面的讨论中已经解释过两次,问题是您的语言环境配置指向一个不存在的语言环境。

你的环境包括 $LANG 没问题;但是,en_GB.UTF-8必须生成语言环境。

在大多数发行版(包括 Debian)上:

  1. /etc/locale.gen在文本编辑器中打开。
  2. en_GB.UTF-8通过删除前导来取消注释该行#
  3. locale-gen以 root 身份运行。

在 Debian 上:

  1. dpkg-reconfigure locales以 root 身份运行。
  2. 向下滚动到“ en_GB.UTF-8”条目,用 标记它Space
  3. 选择OKTabEnter

此外,为了记录,ls是一个单独的程序;它不是bash 的一部分。