什么可能导致这种终端渲染差异?

什么可能导致这种终端渲染差异?

我必须要 ubuntu 22.04:

  • 一个是 Azure,由 Canonical 镜像创建
  • 另一个是从docker hub创建的docker Canonical官方镜像。这是出现问题的部署

我已经在两者中安装了 mc,docker 版本在边框特殊字符上显示不正确的字符。这似乎是代码页/语言设置的不同,但是...

两者有何相同之处(因此改变任何相关内容可能不是解决方案)

  • 我创建了两个完全相同的mobaxterm 会话定义(有重复),我没有改变任何其他东西,只是 IP 地址。(所以这与 SSH 客户端设置无关
  • 我已将正常工作的 .bashrc 复制到不正常工作的环境中,然后创建了一个新的 SSH 会话。

总的来说,这似乎与 SSH 客户端(及其设置)无关,因为如果我只是得到一个提示docker exec -it <containername> bash 问题就在那里

当然,没有 mc 我也可以活下去,但问题不在于 mc,而且我不希望我的系统中存在隐藏的、难以理解的配置问题。

进一步的诊断,感谢您的评论:

$ printf '\xc2\xab\n' # on both terminals
«

$ locale # on bad bad
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

$ locale # on good
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

$ locale charmap # on bad
ANSI_X3.4-1968

$ locale charmap # on good
UTF-8

~$ dpkg -l | grep ncurses # on bad
ii  libncurses6:amd64                    6.3-2ubuntu0.1                          amd64        shared libraries for terminal handling
ii  libncursesw6:amd64                   6.3-2ubuntu0.1                          amd64        shared libraries for terminal handling (wide character support)
ii  ncurses-base                         6.3-2ubuntu0.1                          all          basic terminal type definitions
ii  ncurses-bin                          6.3-2ubuntu0.1                          amd64        terminal-related programs and man pages
ii  ncurses-term                         6.3-2ubuntu0.1                          all          additional terminal type definitions

gabor@vm-wp-01:~$ dpkg -l | grep ncurses # on good
ii  libncurses6:amd64                      6.3-2ubuntu0.1                          amd64        shared libraries for terminal handling
ii  libncursesw6:amd64                     6.3-2ubuntu0.1                          amd64        shared libraries for terminal handling (wide character support)
ii  ncurses-base                           6.3-2ubuntu0.1                          all          basic terminal type definitions
ii  ncurses-bin                            6.3-2ubuntu0.1                          amd64        terminal-related programs and man pages

docker 部署

Azure 部署

相关内容