LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 884|回复: 5

locale的一个怪现象

[复制链接]
发表于 2006-3-4 20:13:02 | 显示全部楼层 |阅读模式
在~/.xinitrc中设置:
export LANG=zh_CN.UTF-8
export LC_CTYPE=zh_CN.utf8
但startx后,打开一个terminal,locale查看却看到
$ locale
LANG=zh_CN.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=en_US.UTF-8

但是env可以看到: $ env | grep LC
LC_ALL=en_US.UTF-8
LC_CTYPE=zh_CN.utf8

不知为何LC_CTYPE一项到底为什么locale和env的不同。但从能够输入中文来看LC_CTYPE=zh_CN.utf8还是起作用了。
发表于 2006-3-4 20:44:36 | 显示全部楼层
zh_CN.utf8 没有这个locale,只有zh_CN.UTF-8
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-4 21:17:45 | 显示全部楼层
Post by Steve3d
zh_CN.utf8 没有这个locale,只有zh_CN.UTF-8

是一样的。这不是问题,我实验过UTF-8。
而且locale -a查看到的编码后缀全部为小写。
关于写法的问题曾有帖子讨论过。
回复 支持 反对

使用道具 举报

发表于 2006-3-5 22:32:59 | 显示全部楼层
我记得一个是另一个的别名,一样的。
回复 支持 反对

使用道具 举报

发表于 2006-3-6 01:31:39 | 显示全部楼层
Post by Steve3d
zh_CN.utf8 没有这个locale,只有zh_CN.UTF-8

normalized locale code
回复 支持 反对

使用道具 举报

发表于 2006-3-6 01:41:20 | 显示全部楼层
Post by 食古不化
在~/.xinitrc中设置:
export LANG=zh_CN.UTF-8
export LC_CTYPE=zh_CN.utf8
但startx后,打开一个terminal,locale查看却看到
$ locale
LANG=zh_CN.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=en_US.UTF-8

但是env可以看到: $ env | grep LC
LC_ALL=en_US.UTF-8
LC_CTYPE=zh_CN.utf8

不知为何LC_CTYPE一项到底为什么locale和env的不同。但从能够输入中文来看LC_CTYPE=zh_CN.utf8还是起作用了。


你设置了LC_ALL
这样就相当于用LC_ALL的值设置了所有以LC_开头的环境变量
如果要了解一些细节
可以在blogsearch.google.com
搜索"zhllg i18n"
我写过一些文章分析这个问题

所以如果要单独设置某个LC_开头的变量,就不要设置LC_ALL
然后再设置LANG保底,因为LANG的优先级最低

比如我的locale
LANG=en_US.utf8
LC_CTYPE=zh_CN.utf8
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

# env |grep  ^L[AC]
LANG=en_US.utf8
LANGUAGE=en
LC_CTYPE=zh_CN.utf8
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表