码迷,mamicode.com
首页 > 其他好文 > 详细

warning: setlocale: LC_CTYPE: cannot change locale

时间:2015-05-07 10:25:53      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

setlocale warning

使用mac上面iterm2一段时间了,登陆服务器老是报如下warning
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
然后yum 安装的时候也会报LC_CTYPE环境变量的问题。于是抽空搜索了一下,找到了如下文章http://www.cyberciti.biz/faq/os-x-terminal-bash-warning-setlocale-lc_ctype-cannot-change-locale/

文章给出了3个解决方案:
1. ssh client关掉 Set locale environment variables on startup。
2. sudo vi ~/.ssh/config 将#SendEnv LANG LC_* 给注释掉。
3. localedef -i en_US -f UTF-8 en_US.UTF-8

前2个我都试过了,是ok 的,关键是理解why为什么。其实ssh 连的时候他会传递环境变量,这个变量如在服务器没有本地的环境,就会报这个错误。我确认了一下,其实就是$LC_CTYPE 这个环境变量导致的。

在mac的环境变量LC_CTYPE=UTF-8

imac:~ aca$ echo $LC_CTYPE
UTF-8
imac:~ aca$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

不传LC参数登陆服务器
在服务器上面LC_CTYPE=”en_US.UTF-8”

[root@iZ28ywqw7nhZ opt]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.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=
[root@iZ28ywqw7nhZ opt]# echo $LC_CTYPE

传LC参数登陆服务器

[root@iZ28ywqw7nhZ ~]# echo "$LC_CTYPE"
UTF-8
[root@iZ28ywqw7nhZ ~]# 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=

传参数导致服务器上面的LC_CTYPE=UTF-8了。

可以看到注意是LC_CTYPE这个参数,mac上面是UTF-8,服务器上面识别不了UTF-8,一般都是”en_US.UTF-8” ,所以会报cannot change locale (UTF-8): No such file or directory 这个warning 。原因在此。

warning: setlocale: LC_CTYPE: cannot change locale

标签:

原文地址:http://blog.csdn.net/aca_jingru/article/details/45557027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!