1
Yadomin 2021-10-16 07:46:36 +08:00 via Android
dpkg-reconfigure locales
|
3
raysonx 2021-10-16 08:38:37 +08:00 via iPad
怀疑你本地的 ssh 客户端将本地的 LC_*环境变量带到远程了。建议检查本地 ssh_config 文件。
|
4
la9998372 2021-10-16 08:54:17 +08:00 1
|
5
hingle 2021-10-16 09:18:09 +08:00
|
6
nbweb OP |
7
skys215 2021-10-16 09:55:36 +08:00
有安装中文 /utf8 包吗
|
8
nbweb OP @skys215 要怎么安装?在.bashrc 的最后加上 export LC_ALL=zh_CN.utf-8 就 ok,删了就不行了。
|
9
bao3 2021-10-16 10:28:34 +08:00 via iPhone
你的终端也要调整的,并不是只调整 server 端。
|
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 文件的话,理论上你也可以用别名,但考虑到不是所有系统都有,在此不作展开。 |
11
aristolochic 2021-10-16 11:32:39 +08:00
另外再提一句,如果你的系统有奇怪的 pam 的话,pam_environment 是有可能覆盖 locale.conf 设置的本地化相关环境变量的。如果有 X 相关的东西的话,那更加有可能被 DE/DM 覆盖,这个就得自己找了,先看看 xinitrc,再看看 DM,再看看 DE 。
|
12
billlee 2021-10-16 11:49:45 +08:00
在 ~/.profile 里设置是正规的做法,linux 本来就可以不同用户有不同 locale.
|
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 |
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 |
15
ZeroDu 2021-10-18 10:46:49 +08:00
同样遇到了,我直接换成英文的了
|
16
cstj0505 2021-10-18 17:16:48 +08:00
命令行中文觉得有点别扭
|