美文网首页
关于locale问题 warning: setlocale:

关于locale问题 warning: setlocale:

作者: t7ink | 来源:发表于2017-10-16 14:43 被阅读3246次

登陆阿里云CentOS出现警告提示

Welcome to aliyun Elastic Compute Service!

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

在远程服务器上输入 locale

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=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=

在自己的Mac上输入locale,发现本机Mac是这样的

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

考虑可能是Mac上UTF-8的字符集Linux上没有对应的?

真正的原因是:结果表现为确实没有对应的,但是根本原因是因为我使用zsh替代的了原始的bash,所以在~/.zshrc没有设置LC_CTYPE,而没有设置时LC_CTYPE的默认值变成了UTF-8,这个值对哪个系统来说都是不存在的。

那么有两种解决方法:

  1. 如果使用zsh需要使用 vim ~/.zshrc在文件末
export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

然后source ~/.zshrc使设置生效。

  1. 不发送本地的locale到远程的主机

编辑 vim /etc/ssh/ssh_config找到SendEnv LANG LC_*注释掉

# SendEnv LANG LC_*

关闭iTerm2再连接也可以。

第一种方法是根本解决之法

参考:

Mac OS X ssh登陆Linux是终端提示cannot change locale (UTF-8)

用 Mac OS X 自带的 SSH 登陆 Linux 后出现中文乱码,如何解决?

相关文章

网友评论

      本文标题:关于locale问题 warning: setlocale:

      本文链接:https://www.haomeiwen.com/subject/iiikuxtx.html