如何在 debian 终端上显示中文? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
nbweb
V2EX    Linux

如何在 debian 终端上显示中文?

  •  
  •   nbweb 2021-10-16 06:52:51 +08:00 7398 次点击
    这是一个创建于 1460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    安装了全新的 debian11 之后,发现在 ssh 的终端上,不显示中文了。

    1,在终端里输入 export LC_ALL=zh_CN.utf-8 之后,可以显示,但是关闭终端再打开,又不行了。
    2,在.bashrc 的最后加上 export LC_ALL=zh_CN.utf-8,全部都可以显示了。
    3,locale 显示如下
    root@debian:~# locale
    LANG=
    LANGUAGE=
    LC_CTYPE="zh_CN.utf-8"
    LC_NUMERIC="zh_CN.utf-8"
    LC_TIME="zh_CN.utf-8"
    LC_COLLATE="zh_CN.utf-8"
    LC_MOnETARY="zh_CN.utf-8"
    LC_MESSAGES="zh_CN.utf-8"
    LC_PAPER="zh_CN.utf-8"
    LC_NAME="zh_CN.utf-8"
    LC_ADDRESS="zh_CN.utf-8"
    LC_TELEPHOnE="zh_CN.utf-8"
    LC_MEASUREMENT="zh_CN.utf-8"
    LC_IDENTIFICATION="zh_CN.utf-8"
    LC_ALL=zh_CN.utf-8

    但是,第 2 条貌似不是正规的做法,有没有在系统里永久改变?默认是英文,但是在终端才显示中文的?第三条显的正规,但是不生效。是不是要重启一下才行?
    16 条回复    2021-10-18 17:16:48 +08:00
    Yadomin
        1
    Yadomin  
       2021-10-16 07:46:36 +08:00 via Android
    dpkg-reconfigure locales
    nbweb
        2
    nbweb  
    OP
       2021-10-16 08:33:12 +08:00
    @Yadomin 添加了,不行
    raysonx
        3
    raysonx  
       2021-10-16 08:38:37 +08:00 via iPad
    怀疑你本地的 ssh 客户端将本地的 LC_*环境变量带到远程了。建议检查本地 ssh_config 文件。
    la9998372
        4
    la9998372  
       2021-10-16 08:54:17 +08:00   1
    hingle
        5
    hingle  
       2021-10-16 09:18:09 +08:00
    nbweb
        6
    nbweb  
    OP
       2021-10-16 09:37:22 +08:00
    @la9998372 用了这个不行,ssh 终端还是不显示中文。

    奇怪,另外一新安装的 debian11 虚拟机是 ok 的。
    skys215
        7
    skys215  
       2021-10-16 09:55:36 +08:00
    有安装中文 /utf8 包吗
    nbweb
        8
    nbweb  
    OP
       2021-10-16 09:56:49 +08:00
    @skys215 要怎么安装?在.bashrc 的最后加上 export LC_ALL=zh_CN.utf-8 就 ok,删了就不行了。
    bao3
        9
    bao3  
       2021-10-16 10:28:34 +08:00 via iPhone
    你的终端也要调整的,并不是只调整 server 端。
    aristolochic
        10
    aristolochic  
       2021-10-16 11:27:13 +08:00   1
    不考虑 ssh 的话(因为你没说你用的是什么),服务端设置 locale 的正确做法是在 locale.conf 写入

    ```
    LANG=zh_CN.UTF-8
    ```

    locale.conf 可以是 /etc/locale.conf 、~/.config/locale.conf 、$XDG_CONFIG_HOME/locale.conf 或 $HOME/.config/locale.conf,依据你希望应用的范围和是否修改了默认 HOME 和 XDG_CONFIG_HOME 而定。

    locale.conf 的变更会在下次登录时生效,要立刻应用新的设置的话,可以运行:

    ``` sh
    $ unset LANG
    $ source /etc/profile.d/locale.sh
    ```

    注意到只设置了 LANG 这一个环境变量,这是因为这个变量的值会覆盖掉所有未设置的 LC_* 变量的值。

    如果你希望做更加细粒度的控制,去看 manpage 。

    你也可以额外设置一个 LANGUAGE,如果上述的 LANG 没有将其设置的话,因为使用 gettext 翻译的软件会按照 LANGUAGE 选择使用的语言。当然现在也不一定,在我常用的 Arch 和 Ubuntu 20.04 中,只设置 LANG 是可以给 LANGUAGE 提供默认值的。

    不建议使用 LC_ALL,这个是为了测试和排错使用的临时值,尤其是它不能出现在 locale.conf 文件中。这个变量的值会覆盖掉 LANG 和所有 LC_* 变量的值,无论它们是否设置。

    ---

    或者运行

    ``` sh
    # localectl set-locale LANG=zh_CN.UTF-8
    ```

    如果有 locale.alias 文件的话,理论上你也可以用别名,但考虑到不是所有系统都有,在此不作展开。
    aristolochic
        11
    aristolochic  
       2021-10-16 11:32:39 +08:00
    另外再提一句,如果你的系统有奇怪的 pam 的话,pam_environment 是有可能覆盖 locale.conf 设置的本地化相关环境变量的。如果有 X 相关的东西的话,那更加有可能被 DE/DM 覆盖,这个就得自己找了,先看看 xinitrc,再看看 DM,再看看 DE 。
    billlee
        12
    billlee  
       2021-10-16 11:49:45 +08:00
    在 ~/.profile 里设置是正规的做法,linux 本来就可以不同用户有不同 locale.
    liuxu
        13
    liuxu  
       2021-10-16 16:25:06 +08:00
    debian 一般默认是安装好了 locale 包的

    1. 查看当前 locale 以及系统支持的语言
    # locale
    # localectl list-localesC.UTF-8
    en_US.UTF-8
    很明显此时你没有 zh_CN.UTF-8

    2. 取消 /etc/locale.gen 中的“zh_CN.UTF8 UTF8”的注释,并让系统加载
    # vim /etc/locale.gen
    # locale-gen

    3. 此时可以看到已经有了 zh_CN.UTF-8
    root@li1604-45:~# localectl list-locales
    C.UTF-8
    en_US.UTF-8
    zh_CN.UTF-8

    4. 使用 zh_CN.UTF-8
    # localectl set-locale zh_CN.UTF-8

    5. 重新 ssh 登录,此时环境变量全部 zh_CN.UTF-8
    root@li1604-45:~# locale
    LANG=zh_CN.UTF-8
    LANGUAGE=
    LC_CTYPE="zh_CN.UTF-8"
    LC_NUMERIC="zh_CN.UTF-8"
    LC_TIME="zh_CN.UTF-8"
    LC_COLLATE="zh_CN.UTF-8"
    LC_MOnETARY="zh_CN.UTF-8"
    LC_MESSAGES="zh_CN.UTF-8"
    LC_PAPER="zh_CN.UTF-8"
    LC_NAME="zh_CN.UTF-8"
    LC_ADDRESS="zh_CN.UTF-8"
    LC_TELEPHOnE="zh_CN.UTF-8"
    LC_MEASUREMENT="zh_CN.UTF-8"
    LC_IDENTIFICATION="zh_CN.UTF-8"
    LC_ALL=


    6.一般情况你还需要手动设置 LC_ALL,所以在~/.bashrc 里面添加
    LC_ALL=zh_CN.UTF-8

    然后加载
    # source ~/.bashrc
    liuxu
        14
    liuxu  
       2021-10-16 16:27:27 +08:00
    1 中排版有问题,更正一下:

    1. 查看当前 locale 以及系统支持的语言
    # locale
    # localectl list-locales
    C.UTF-8
    en_US.UTF-8
    很明显此时你没有 zh_CN.UTF-8
    ZeroDu
        15
    ZeroDu  
       2021-10-18 10:46:49 +08:00
    同样遇到了,我直接换成英文的了
    cstj0505
        16
    cstj0505  
       2021-10-18 17:16:48 +08:00
    命令行中文觉得有点别扭
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2666 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:23 PVG 23:23 LAX 08:23 JFK 11:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86