linux中的本地化
linux中顯示亂碼了怎么辦?這時候需要設置對本地化。知其然還要知其所以然,下面一步步來為你截開linux中的本地化的神秘面紗。
原文:小宇的博客
從locale說起
locale翻譯過來是本地的意思。linux中的locale工具能夠輸出當前本地化信息,或者輸出所有支持的本地化、編碼信息。
在linux中執行locale命令可以顯示出當前的本地化信息。
本地化信息包含了13個變量
用于字符分類和字符串處理(大小寫轉換),控制所有字符的處理方式,包括字符編碼,字符是單字節還是多字節,如何打印等。是最重要的一個環境變量。
字符的比較和排序規則。
貨幣格式。
非貨幣的數字顯示格式。
時間和日期格式。
提示信息的語言。另外還有一個LANGUAGE參數,它與LC_MESSAGES相似,但如果該參數一旦設置,則LC_MESSAGES參數就會失效。LANGUAGE參數可同時設置多種語言信息,如LANGUANE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”。
LC_*的默認值,是最低級別的設置,如果LC_*沒有設置,則使用該值。類似于 LC_ALL。如果LANG設置了,別的變量也設置成這個值。
它是一個宏,如果該值設置了,則該值會覆蓋所有LC_*的設置值。注意,LANG的值不受該宏影響。
紙張大小。
名稱的格式
地址的格式
電話的格式
度量單位
可以看各種變量的值都是zh_CN.UTF-8,它表示什么意思呢?
分為2個部分:
zh_CN : 是語言.地點信息
UTF-8 : 是字符編碼信息
其書寫格式是語言[_地域[.字符集]]
比如zh_CN.UTF-8說明現在用中文,地處中華人民共和國,用的是UTF-8字符編碼。
比如zh_TW.BIG5說名現在用中文,地處臺灣,用的是大五碼字符集
可以通過locale -a命令查看支持的地點
可以通過locale -m命令查看支持的編碼
$ locale -m | grep BIG BIG5 BIG5-HKSCS UTF-8 GB18030 GB2312 GBK GB_1988-80有關這些信息都放在/usr/share/i18n文件夾下:
/usr/share/i18n |-- SUPPORTED |-- charmaps | |-- ANSI_X3.110-1983.gz | |-- ANSI_X3.4-1968.gz | |-- ARMSCII-8.gz | |-- ASMO_449.gz | |-- BIG5-HKSCS.gz | |-- BIG5.gz | |-- UTF-8.gz | |-- VIDEOTEX-SUPPL.gz | |-- VISCII.gz | `-- WINDOWS-31J.gz `-- locales|-- POSIX|-- aa_DJ|-- aa_ER|-- aa_ER@saaho|-- aa_ET|-- af_ZA|-- zh_CN|-- zh_HK|-- zh_SG|-- zh_TW`-- zu_ZAlocales文件夾下面其實都是可編輯的文本文件。有興趣的可以打開試試。
有時候因為編碼的不同,顯示出來的是亂碼。那么如何設置呢?
如何設置編碼
設定locale就是設定12大類的locale分類屬性,即13個LC_*。除了這13個變量可以設定以外,為了簡便起見,還有兩個變量:LC_ALL和LANG。它們之間有一個優先級的關系:
LC_ALL > LANG可以這么說,LC_ALL是最上級設定或者強制設定,而LANG是默認設定值。
1、如果你設定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG設定成什么值,它們都會被強制服從LC_ALL的設定,成為 zh_CN.UTF-8。
2、假如你設定了LANG=zh_CN.UTF-8,并且沒有設定LC_ALL的話,那么系統的locale設定以LC_*=zh_CN.UTF-8。
PS: 除了環境變量設置對,如果使用的是圖形化終端,還需要在終端設置相應的編碼。
總結
以上是生活随笔為你收集整理的linux中的本地化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ICPC 2015 北京 Today I
- 下一篇: 红帽linux内核,如何下载centos