zoukankan      html  css  js  c++  java
  • linux中文乱码问题及locale详解

    一、修改系统默认语言及中文乱码问题
    记录系统默认使用语言的文件是/etc/sysconfig/i18n,如果默认安装的是中文的系统,i18n的内容如下: LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh" LINUXTYPE=targeted

    LANG变量是language的简称,决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等。SYSFONT是system font的简称,决定系统默认用哪一种字体。SUPPORTED变量决
    定系统支持的语言,即系统能够显示的语言。需要说明的是,由于计算机起源于英语国家,因此,不管你把这些变量设置成什么,英语总是默认支持的,而且不管用什么字体,英文字体总包含在其中。

    临时调整终端乱码现象:# LANG="en_US.UTF-8" 即把系统的语言临时设置成英文,或者更简单一点,可以直接这样: # LANG="" 或export LANG=""
    LANG变量被清空后,系统就默认用英语。这样设置后,在字符模式下输出的出错信息等就是全英文的了。但这种设置是临时的,只是临时改变了LANG这个bash变量而已。当退出重新登录或者切换到其他字符终端后就无效了。只要把i18n文件中的LANG变量设置成英文的”en_US.UTF-8”,就可以永久解决这个问题了。命令:vi etc/sysconfig/i18n
    修改后的文件如下: #LANG="zh_CN.UTF-8" LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh" 
    请不要把LANG变量简单的清空,因为这个变量不仅在字符模式下用到,在图形界面下也用到,简单清空在字符模式下确实不会有问题,但在图形界面下,却会造成中文无法正常显示的情况,在过去Redhat系列的版本中i18n文件中还有一个叫LANGUAGE的变量,专门控制图形界面下的语言设置,现在的FC系列中已经把这两个变量整合成一个变量了。 
    二、locale

    程序运行使用一套语言需要有字符集(数据)和字体(显示),Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
    locale常用操作
    1、查看现有语言环境:
    locale
    2、可用语言环境:
    locale -a
    3、临时修改语言环境:
    AIX:
    export LANG=en_US
    export LANG=zh_CN

    Linux:
    export LANG=en_US.UTF-8
    export LANG=zh_CN.UTF-8
    4、永久修改系统级字符集:
    修改/etc/sysconfig/i18n
    英文版系统:
    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"

    中文版系统:
    LANG="zh_CN.UTF-8"或者LANG="zh_CN.gbk"
    SYSFONT="latarcyrheb-sun16"

    vi /.bash_profile

    三、安装中文字符集

    1、安装所有与中文支持相关的包
    # yum -y groupinstall chinese-support

    2、修改字符编码配置文件
    # vi /etc/sysconfig/i18n
    修改后内容如下:
    LANG="zh_CN.UTF-8"
    SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
    SYSFONT="latarcyrheb-sun16"

    locale详解
    在 Linux 中通过 locale 来设置程序运行的不同语言环境,locale 由 ANSI C 提供支持。locale 的命名规则为:
    <语言>_<地区>.<字符集编码>
    如:
    zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。
    在locale环境中,有一组变量,代表国际化环境中的不同设置:
    1、LC_COLLATE
    定义该环境的排序和比较规则
    2、LC_CTYPE
    用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
    3、LC_MONETARY
    货币格式
    4、LC_NUMERIC
    非货币的数字显示格式
    5、LC_TIME
    时间和日期格式
    6、LC_MESSAGES
    提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如
    LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
    7、LANG
    LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。
    8、LC_ALL
    它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。
    一个例子:
    设置前,使用默认locale:
    # locale
    LANG="POSIX"
    LC_CTYPE="POSIX"
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    设置后,使用zh_CN.GBK中文locale:

    # export LC_ALL=zh_CN.GBK
    # locale
    LANG=zh_CN.UTF-8
    LC_CTYPE="zh_CN.GBK"
    LC_NUMERIC="zh_CN.GBK"
    LC_TIME="zh_CN.GBK"
    LC_COLLATE="zh_CN.GBK"
    LC_MONETARY="zh_CN.GBK"
    LC_MESSAGES="zh_CN.GBK"
    LC_PAPER="zh_CN.GBK"
    LC_NAME="zh_CN.GBK"
    LC_ADDRESS="zh_CN.GBK"
    LC_TELEPHONE="zh_CN.GBK"
    LC_MEASUREMENT="zh_CN.GBK"
    LC_IDENTIFICATION="zh_CN.GBK"
    LC_ALL=zh_CN.GBK
    "C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。

    LANG="zh_CN.UTF-8" 
    SYSFONT="latarcyrheb-sun16"
    SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
    LINUXTYPE=targeted
    LANG="zh_CN.GB18030"
    LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
    SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
    SYSFONT="lat0-sun16"
    

      

  • 相关阅读:
    POJ
    POJ
    POJ
    POJ
    POJ
    ZOJ
    HDU
    python中主要存在的四种命名方式:
    python 中的 赋值 浅拷贝 深拷贝
    python中sorted方法和列表的sort方法使用
  • 原文地址:https://www.cnblogs.com/rusking/p/3695993.html
Copyright © 2011-2022 走看看