rxvt-unicode + mc - 仅限根 shell 中的奇怪字符

rxvt-unicode + mc - 仅限根 shell 中的奇怪字符

使用 rxvt-unicode-9.11 和 mc-4.7.5.2,并使用 zsh-4.3.11 作为登录 shell,我发现我得到了奇怪的字符,例如 â 而不是绘制的线条。

然而有趣的是,从任何根 shell 启动 urxvt,然后在其中运行 mc 可以正确呈现这些行。

在 Xdefaults 中我没有设置字体。

我认为任何子 shell 都应该继承与父 shell 相同的属性,但显然事实并非如此。

父级中的导出:

COLON_SEPARATED=MOZ_PLUGIN_PATH
COLORFGBG='7;default'
COLORTERM=rxvt
CONFIG_PROTECT_MASK='/lib64/udev/rules.d /etc/dconf/db /etc/ca-certificates.conf'
CVS_RSH=ssh
DESKTOP_STARTUP_ID=awesome/urxvtc/2194-57-alipc-desktop-ex_TIME28147172
DISPLAY=:0.0
GDK_USE_XFT=1
GPG_AGENT_INFO=/tmp/gpg-CeLaPY/S.gpg-agent:2191:1
HOME=/home/ali
INFOPATH=/usr/share/info
JAVAC=/usr/bin/javac
JAVACMD=/usr/bin/java
JAVA_HOME=/usr/lib64/jdk
LANG=en_GB.utf8
LDPATH=/usr/local/lib:/usr/lib64/nss:/usr/lib64/vdpau:/usr/lib64/qt4
LESS='-R -M --shift 5'
LOGNAME=ali
MAIL=/var/mail/ali
MANPATH=/usr/local/share/man:/usr/share/man
MOZ_PLUGIN_PATH=/usr/lib64/mozilla/plugins:/opt/netscape/plugins
PAGER=/usr/bin/less
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib64/jdk/bin:/usr/lib64/jre/bin:/opt/bin:/usr/lib64/jdk/bin:/usr/lib64/jre/bin
PWD=/home/ali
SHELL=/bin/zsh
SHLVL=2
SSH_AGENT_PID=2193
SSH_AUTH_SOCK=/tmp/ssh-RhQcEipf2192/agent.2192
TERM=rxvt-256color
TERMINFO=/usr/share/terminfo
USER=ali
WINDOWID=20972128
XAUTHORITY=/home/ali/.Xauthority
_=export

儿童出口:

COLON_SEPARATED=MOZ_PLUGIN_PATH
COLORFGBG='7;default'
COLORTERM=rxvt
CONFIG_PROTECT_MASK='/lib64/udev/rules.d /etc/dconf/db /etc/ca-certificates.conf'
CVS_RSH=ssh
DESKTOP_STARTUP_ID=awesome/urxvtc/2194-57-alipc-desktop-ex_TIME28147172
DISPLAY=:0.0
GDK_USE_XFT=1
GPG_AGENT_INFO=/tmp/gpg-CeLaPY/S.gpg-agent:2191:1
HOME=/home/ali
INFOPATH=/usr/share/info
JAVAC=/usr/bin/javac
JAVACMD=/usr/bin/java
JAVA_HOME=/usr/lib64/jdk
LANG=en_GB.utf8
LDPATH=/usr/local/lib:/usr/lib64/nss:/usr/lib64/vdpau:/usr/lib64/qt4
LESS='-R -M --shift 5'
LOGNAME=ali
MAIL=/var/mail/ali
MANPATH=/usr/local/share/man:/usr/share/man
MOZ_PLUGIN_PATH=/usr/lib64/mozilla/plugins:/opt/netscape/plugins
OLDPWD=/home/ali
PAGER=/usr/bin/less
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib64/jdk/bin:/usr/lib64/jre/bin:/opt/bin:/usr/lib64/jdk/bin:/usr/lib64/jre/bin
PWD=/home/ali
SHELL=/bin/zsh
SHLVL=4
SSH_AGENT_PID=2193
SSH_AUTH_SOCK=/tmp/ssh-RhQcEipf2192/agent.2192
STY=27048.pts-2.alipc-desktop-ex
TERM=rxvt-256color
TERMINFO=/usr/share/terminfo
USER=ali
WINDOW=0
WINDOWID=27262984
XAUTHORITY=/home/ali/.Xauthority
_=export

谢谢。

编辑:更多信息+组合:.zshrc:

# The following lines were added by compinstall

zstyle ':completion:*' completer _expand _complete _ignored
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle :compinstall filename '/home/ali/.zshrc'

autoload -U zutil
autoload -Uz compinit
autoload -U complist
compinit
autoload -U colors
colors
# End of lines added by compinstall
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory autocd extendedglob notify
unsetopt beep
bindkey -v
# End of lines configured by zsh-newuser-install

#export PS1="%n#%d>"

PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%d %{$reset_color%}%#"
RPROMPT="[%{$fg[yellow]%}%T%{$reset_color%}]"

区域设置 -a: C en_GB.utf8 en_US.utf8 POSIX

从 'urxvt -e zsh -f' 导出: - 一个工作集!

COLORFGBG='7;default'
COLORTERM=rxvt
DESKTOP_STARTUP_ID=awesome/urxvt/2199-28-alipc-desktop-ex_TIME11280170
DISPLAY=:0.0
GPG_AGENT_INFO=/tmp/gpg-d5ZFvz/S.gpg-agent:2196:1
HOME=/home/ali
LOGNAME=ali
MAIL=/var/mail/ali
PATH=/bin:/usr/bin:/usr/local/bin
PWD=/home/ali
SHELL=/bin/zsh
SHLVL=2
SSH_AGENT_PID=2198
SSH_AUTH_SOCK=/tmp/ssh-sPZhKOhV2197/agent.2197
TERM=rxvt-unicode-256color
TERMINFO=/usr/share/terminfo
USER=ali
WINDOWID=23068680
XAUTHORITY=/home/ali/.Xauthority
_=export

注意:我确实尝试通过 .Xdefaults 将我的术语设置为在“干净”窗口中工作的术语:

urxvt*termName:  rxvt-unicode-256color

虽然这没有效果,所以影响它的不是 TERM。

答案1

STY您已在子项中设置了环境变量。鉴于它的存在及其内容,孩子实际上是在屏幕内运行。您的环境在两个方面不正确(即它对应用程序撒谎):

  • 您有一个 Unicode 终端,并且正在尝试显示非 ASCII 字符。然而你的环境并没有定义LC_CTYPE。如果要显示非 ASCII 字符,则必须设置LC_CTYPE,通常为类似 的值en_US.UTF-8
  • 您正在使用 Screen,终端类型 ( $TERM) 被声明为rxvt-256color

.zshrc你的看法可能有问题TERM。对于LC_CTYPE,如果您始终在 UTF-8 语言环境中工作,最简单的方法是在您的.profile.

答案2

面临类似的问题。更改了我的腻子会话的编码以匹配终端中使用的编码。因此,更改了 putty 配置 -> 翻译为 UTF-8

区域设置 LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF -8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT= "en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=

相关内容