ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下perldoc乱码延伸至LANG,LC_ALL,locale探讨

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

原创 Linux操作系统 作者:brightking716 时间:2010-08-05 16:02:02 0 删除 编辑

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

另外LANG和LANGUAGE有什么区别呢?

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博客 ” ,链接:https://blog.itpub.net/12472709/viewspace-1036189/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-12-04

  • 博文量
    34
  • 访问量
    151848