linux中修改字符編碼

 

一. ubuntu修改字符編碼

1. 添加字符編碼,例如zh_CN.UTF-8,有兩種方式

方法1:locale-gen zh_CN.UTF-8   #locale-gen命令只在ubuntu中才有ubuntu

方法2:在/var/lib/locales/supported.d/local中添加字符集zh_CN.UTF-8,保存後dpkg-reconfigure locales,而後重啓電腦centos

 

2. 修改字符編碼,只需修改文件 /etc/default/locale

例子1:解決date命令時間格式顯示錯誤的問題             
            添加LC_TIME="en_US.UTF-8"  要重啓才能生效,或者使用命令 source /etc/default/locale;若要改爲中文,只需設爲zh_CN.UTF-8便可。
 
例子2:裝系統的時候若是選擇中文安裝,那麼在命令行界面輸出命令的時候會顯示亂碼,只需在這個文件修改成以下          
            LANG="en_US.UTF-8"
            LANGUAGE="en_US:en"   #管理部分命令輸出的狀態信息,好比ufw status的輸出信息
 

3. 其餘字符相關文件

1) /etc/environment   這個和echo $PATH的輸出是同樣的,是語言環境變量文件
2)/var/lib/locales/supported.d/local  這個是已經激活的區域語言的列表
 

 

 

二. Centos修改系統級字符集

修改/etc/sysconfig/i18n,英文版和中文版系統初始信息應該以下
英文版系統:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
 
中文版系統:
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
 
若是想在英文系統中使用中文,應該怎麼作呢
1. 安裝系統支持中文字符集:yum install fonts-chinese
2. 安裝全部與中文支持相關的包:yum -y groupinstall chinese-support
3. 修改/etc/sysconfig/i18i,修改後內容以下: 
    LANG="zh_CN.UTF-8"
    #LC_ALL=zh_CN.UTF-8  貌似也能夠這樣寫,centos中還沒通過驗證
    SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030" 
    SYSFONT="latarcyrheb-sun16"
 
修改文件保存退出以後要生效要執行以下命令纔可生效
[test@pan ~]$ source /etc/sysconfig/i18n
 
 
 

三. locale經常使用命令

1. 查看現有語言環境:locale
2. 全部可用語言環境:locale -a,可用來查看是否安裝某種字符集,若是沒有,就安裝
 
 
 

. locale 詳解

Locale 是軟件在運行時的語言環境, 它包括語言(Language), 地域 (Territory) 和字符集(Codeset)。一個locale的書寫格式爲: 語言[_地域[.字符集]]. 例如: zh_CN.GB2312=中文_中華人民共和國+國標2312字符集。
 
locale把按照所涉及到的文化傳統的各個方面分紅12個大類,這12個大類分別是:
一、語言符號及其分類(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)。
 
語言符號及其分類(LC_CTYPE),  與中文輸入關係最密切的就是 LC_CTYPE, LC_CTYPE 規定了系統內有效的字符以及這些字符的分類,諸如什麼是大寫字母,小寫字母,大小寫轉換,標點符號、可打印字符和其餘的字符屬性等方面
設定locale就是設定12大類的locale分類屬性,即 12個LC_*。
 
除了這12個變量能夠設定之外,爲了簡便起見,還有兩個變量:LC_ALL和LANG。
它們之間有一個優先級的關係: LC_ALL>LC_*>LANG 能夠這麼說,LC_ALL是最上級設定或者強制設定,而LANG是默認設定值。
 
好比:
一、若是你設定了LC_ALL=zh_CN.UTF-8,那麼無論LC_*和LANG設定成什麼值,它們都會被強制服從LC_ALL的設定,成爲 zh_CN.UTF-8。
二、假如你設定了LANG=zh_CN.UTF-8,而其餘的LC_*=en_US.UTF-8,而且沒有設定LC_ALL的話,那麼系統的locale設定以LC_*=en_US.UTF-8。
三、假如你設定了LANG=zh_CN.UTF-8,而其餘的LC_*,和LC_ALL均未設定的話,系統會將LC_*設定成默認值,也就是LANG的值 zh_CN.UTF-8 。
四、假如你設定了LANG=zh_CN.UTF-8,而LC_CTYPE=en_US.UTF-8,其餘的LC_*,和LC_ALL均未設定的話,
      那麼系統的locale設定將是:LC_CTYPE=en_US.UTF-8,其他的 LC_COLLATE,LC_MESSAGES等等均會採用默認值,也就是LANG的值
相關文章
相關標籤/搜索