[已解决]tty 终端怎样才能正确显示中文

谢谢!

zh.opensuse.org/SDB:Fbterm#256_.E8.89.B2 按这里的指示将环境变量设置加到 ~/.fbtermrc 里没有作用呢。

还得在终端启动 fcitx

fcitx&

正好我也遇到了这个问题, 采取的方案是如果通过终端直接登录, 则切换到美式英语, 否则保持不变, 起码做系统管理没问题了.

vim /etc/profile.d/lang.sh

#
# Bind language to english to defend font not found
#
consoletype=$(tty | awk '/^\/dev\/[^\/]+$/ {print "vt"}')

if [ -n "$LANG" ]; then
    case $LANG in
        *.utf8*|*.UTF-8*)
        if [ "$TERM" = "linux" ]; then
            if [ "$consoletype" = "vt" ]; then
                case $LANG in
                    ja*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    ko*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    si*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    zh*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    ar*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    fa*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    he*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    en_IN*) ;;
                    *_IN*) LANG=en_US.UTF-8 ;;
                esac
            fi
        fi
        ;;
        *)
        if [ "$TERM" = "linux" ]; then
            if [ "$consoletype" = "vt" ]; then
                case $LANG in
                    ja*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    ko*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    si*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    zh*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    ar*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    fa*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    he*) LANG=en_US.UTF-8; LANGUAGE=en_US:en ;;
                    en_IN*) ;;
                    *_IN*) LANG=en_US.UTF-8 ;;
                esac
            fi
        fi
        ;;
    esac
fi
unset consoletype

嗯, 效果就是, 从 ssh 之类的连上服务器, 用的就是中文, 直接从控制台登录, 就是英文. 平常用 xshell 的时候, 中文完美显示, 如果不小心把ssh玩坏了, 直接终端登录, 命令提示就是英文的, 不怕撞方块了.