shell 不显示中文
最近遇到了 webshell 不显示中文的问题。排查了很久,最终解决了,这里记录下。
我的这个场景比较特别,是 webshell 连接的群晖,然后里面开了 tmux,默认 shell 是 bash,我是手动切到了 fish 里操作的。套了很多层,以后这种问题应该一层层检查,而不是盲目尝试。
SSH 的 client 和 server
最简单的模式是 client 直接 ssh 连上 server。这里要配置的就是 LC_ALL 和 LANG 两个环境变量。
首先 locale -a
查看支持的本地语言,一般会出现类似 zh_CN.utf8
这样的内容。带 utf8 的都是可以支持中文的,前面的 zh_CN
表示系统使用的本地化语言。
如果是要支持中文的话配置
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
这几个环境变量的优先级是 LC_ALL > LC_* > LANG。
如果 locale 后看到没有对自己语言的支持,可以用
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
安装语言。
环境变量改好后重新开一个 shell 试试。
tmux
我这次的问题在于 tmux,改好环境变量后,直接使用可以显示中文了,但是进入到 tmux 里又不可以了。
最后找到一篇文章试了下用 tmux -u new -s <session-name>
创建新的 session 就可以了。
理论上 tmux 特别老的版本才需要这个参数,不知道这里的原因。
另外在开启 tmux session 前配置要环境变量才能使 session 里面的所有会话有效。
Read other posts