Linux下perldoc乱码延伸至LANG,LC_ALL,locale探讨

Linux下用perldoc命令查看的时候出现乱码

# perldoc Test::Builder

如果出现这种问题,还会出现在其他的Linux命令,man,info

而我的Linux操作系统是英文的,设置的locale: LANG= en_US.UTF-8

出现这种情况,应该是编码格式的问题,可以再profile文件中设置

$ vi .bash_profile

alias man='LANG=C man'

C代表英文环境 ASCII 编码格

[@more@]

Locale:

Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。

这个用户环境可以按照所涉及到的文化传统的各个方面分成几个大类,通常包括用户所使用的语言符号及其分类(LC_CTYPE),数字 (LC_NUMERIC),比较和排序习惯(LC_COLLATE),时间显示格式(LC_TIME),货币单位(LC_MONETARY),信息主要是 提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES),姓名书写方式(LC_NAME),地址书写方式 (LC_ADDRESS),电话号码书写方式 (LC_TELEPHONE),度量衡表达方式(LC_MEASUREMENT),默认纸张尺寸大小 (LC_PAPER)locale对自身包含信息的概述(LC_IDENTIFICATION)

character set

字符集(character set)就是字符,尤其是非英语字符在系统内的编码方式,也就是通常所说的内码,所有的字符集都放在 /usr/share/i18n/charmaps,所有的字符集也都是用Unicode编号索引的。

Locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。一个locale的书写格式为: 语言[_地域[.字符集]]. 所以说呢,locale总是和一定的字符集相联系的。

例如
zh_CN.GB2312是指:
语言为中文,身处中华人民共和国,使用国标2312字符集来表达字符。 zh_CN.GB2312=中文_中华人民共和国+国标2312字符集。

设定locale就是设定12大类的locale分类属性,即12LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALLLANG它们之间有一个优先级的关系:LC_ALL > LC_* >LANG可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

另外LANGLANGUAGE有什么区别呢?

LANG - Specifies the default locale for all unset locale variables
LANGUAGE - Most programs use this for the language of its interface
LANGUAGE
是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值

Reference:

http://hi.baidu.com/edeed/blog/item/2e99a14440bd8884b2b7dcb1.html

http://blog.chinaunix.net/u2/60913/showart_1161340.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12472709/viewspace-1036189/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12472709/viewspace-1036189/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值