linux中的本地化
linux中顯示亂碼了怎么辦?這時(shí)候需要設(shè)置對(duì)本地化。知其然還要知其所以然,下面一步步來(lái)為你截開(kāi)linux中的本地化的神秘面紗。
原文:小宇的博客
從locale說(shuō)起
locale翻譯過(guò)來(lái)是本地的意思。linux中的locale工具能夠輸出當(dāng)前本地化信息,或者輸出所有支持的本地化、編碼信息。
在linux中執(zhí)行l(wèi)ocale命令可以顯示出當(dāng)前的本地化信息。
本地化信息包含了13個(gè)變量
用于字符分類和字符串處理(大小寫轉(zhuǎn)換),控制所有字符的處理方式,包括字符編碼,字符是單字節(jié)還是多字節(jié),如何打印等。是最重要的一個(gè)環(huán)境變量。
字符的比較和排序規(guī)則。
貨幣格式。
非貨幣的數(shù)字顯示格式。
時(shí)間和日期格式。
提示信息的語(yǔ)言。另外還有一個(gè)LANGUAGE參數(shù),它與LC_MESSAGES相似,但如果該參數(shù)一旦設(shè)置,則LC_MESSAGES參數(shù)就會(huì)失效。LANGUAGE參數(shù)可同時(shí)設(shè)置多種語(yǔ)言信息,如LANGUANE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”。
LC_*的默認(rèn)值,是最低級(jí)別的設(shè)置,如果LC_*沒(méi)有設(shè)置,則使用該值。類似于 LC_ALL。如果LANG設(shè)置了,別的變量也設(shè)置成這個(gè)值。
它是一個(gè)宏,如果該值設(shè)置了,則該值會(huì)覆蓋所有LC_*的設(shè)置值。注意,LANG的值不受該宏影響。
紙張大小。
名稱的格式
地址的格式
電話的格式
度量單位
可以看各種變量的值都是zh_CN.UTF-8,它表示什么意思呢?
分為2個(gè)部分:
zh_CN : 是語(yǔ)言.地點(diǎn)信息
UTF-8 : 是字符編碼信息
其書(shū)寫格式是語(yǔ)言[_地域[.字符集]]
比如zh_CN.UTF-8說(shuō)明現(xiàn)在用中文,地處中華人民共和國(guó),用的是UTF-8字符編碼。
比如zh_TW.BIG5說(shuō)名現(xiàn)在用中文,地處臺(tái)灣,用的是大五碼字符集
可以通過(guò)locale -a命令查看支持的地點(diǎn)
可以通過(guò)locale -m命令查看支持的編碼
$ locale -m | grep BIG BIG5 BIG5-HKSCS UTF-8 GB18030 GB2312 GBK GB_1988-80有關(guān)這些信息都放在/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文件夾下面其實(shí)都是可編輯的文本文件。有興趣的可以打開(kāi)試試。
有時(shí)候因?yàn)榫幋a的不同,顯示出來(lái)的是亂碼。那么如何設(shè)置呢?
如何設(shè)置編碼
設(shè)定locale就是設(shè)定12大類的locale分類屬性,即13個(gè)LC_*。除了這13個(gè)變量可以設(shè)定以外,為了簡(jiǎn)便起見(jiàn),還有兩個(gè)變量:LC_ALL和LANG。它們之間有一個(gè)優(yōu)先級(jí)的關(guān)系:
LC_ALL > LANG可以這么說(shuō),LC_ALL是最上級(jí)設(shè)定或者強(qiáng)制設(shè)定,而LANG是默認(rèn)設(shè)定值。
1、如果你設(shè)定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG設(shè)定成什么值,它們都會(huì)被強(qiáng)制服從LC_ALL的設(shè)定,成為 zh_CN.UTF-8。
2、假如你設(shè)定了LANG=zh_CN.UTF-8,并且沒(méi)有設(shè)定LC_ALL的話,那么系統(tǒng)的locale設(shè)定以LC_*=zh_CN.UTF-8。
PS: 除了環(huán)境變量設(shè)置對(duì),如果使用的是圖形化終端,還需要在終端設(shè)置相應(yīng)的編碼。
總結(jié)
以上是生活随笔為你收集整理的linux中的本地化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ICPC 2015 北京 Today I
- 下一篇: 2019.7.10--jzDay6