您的位置:首页 > 运维架构 > Linux

Linux 终端 中文文件名问题总结

2011-01-26 16:19 302 查看
 
1.LANG 是控制 环境的语言的.
比如 df 如果LANG 是英文 显示的是
Filesystem 1K-blocks Used Available Use% Mounted on
如果LANG 是中文 显示的是
Filesystem 1K-块 已用 可用 已用% 挂载点
2.LANG的变量值的含义,比如,zh_CN.GB2312 zh_CN是中文的意思,GB2312就是编码. 这时候在系统中运行命令的时候
返回的是中文结果并以GB2312的编码流和terminal通讯. zh_CN.UTF-8 ,现实中文但是以UTF-8编码流和terminal通讯.
3. 如果设置了zh_CN.UTF-8而terminal不支持UTF-8的话. 在terminal上显示的就是乱码.
比如putty,它支持的终端编码是ascii. 所以如果LANG用的是zh_CN.UTF-8 df显示的的中文部分就是乱码了.
因为服务端传来的是utf-8编码.putty无法识别.
putty不支持unicode的,所以才有了台湾兄弟写的pietty支持unicode.
Tips:
使用putty的时候 LANG 无论设置成en_US.UTF-8和zh_CN.UTF-8都会有一些乱码出现.
可以设置LANG为ascii 和 或者和ascii兼容的gb2312 以及 GBK等.
4./etc/sysconfig/i18n 会overide /etc/profile 以及用户自己的初始化文件的中的LANG以及LC_CTYPE变量
它是最后生效的.但是登录后用户自己export的变量会overidei18n.
5.LC_CTYPE(是不是locale character type?)的意思是locale的使用的字符
还有数字 (LC_NUMERIC),比较和排序习惯(LC_COLLATE),时间显示格式(LC_TIME),货币单位(LC_MONETARY)等
对于终端要显示utf-8编码中文文件名(目录名) 需要LC_CTYPE 为任何一个utf-8 就可以 .
但对于 FlashFXP(目前只能显示GB2312) 来说,是不用设置LC_CTYPE的.
问题:
关于 zh_CN.UTF-8和zh_TW.UTF-8有什么区别呢? 都是utf-8的编码. 浏览器就只有一个UTF-8编码的选项 没有zh_CN.UTF-8和zh_TW.UTF-8的选项?
个人认为zh_CN显示简体环境. zh_TW显示繁体环境. UTF-8是terminal和server端通讯用的编码方式.
个人总结:
无论linux还是freebsd
当没有LC_ALL的环境变量的时候
LC_CTYPE 控制的是文件名的编码方式 LANG控制的环境语言显示(以及终端和服务端的通讯??)(比如命令返回结果).
比如我想用英文环境但是同时保留utf-8编码的中文目录显示.可以设置LANG=en_US.UTF-8,LC_CTYPE=zh_CN.UTF-8
当LC_ALL有的时候.就override LC_CTYPE 和LANG. 可以说 LC_ALL=LC_CTYPE+LANG
举例:
Big5的中文目录,Server Linux, 终端使用Pietty
Pietty Big5
LANG en_US.UTF-8
LC_CTYPE zh_TW.Big5
可以正常显示中文目录 命令返回英文.
Pietty Big5
LANG zh_TW.UTF-8
LC_CTYPE zh_TW.Big5
可以正常显示中文目录 命令返回中文但乱码.
总之 其他都不要 只要 LC_CTYPE设置成任何的一个UTF-8, 然后pietty设置成Unicode 就可以看 utf-8编码的中文目录了.
要看gb1232编码的中文目录 只要
unset LC_ALL 并且LC_CTYPE 设置成 en_US.ISO8859-1 或者zh_CN.GB2312
或者
LC_ALL=en_US.ISO8859-1 或者zh_CN.GB2312
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 职场 中文