linux中顯示亂碼了怎麼辦?這時候需要設定對本地化。知其然還要知其所以然,下面一步步來為你截開linux中的本地化的神秘面紗。原文:小宇的部落格
locale翻譯過來是本地
的意思。linux中的locale
工具能夠輸出當前本地化資訊,或者輸出所有支援的本地化、編碼資訊。
在linux中執行locale
命令可以顯示出當前的本地化資訊。
$ locale
lang=zh_cn.utf-8
language=zh_cn:zh
lc_ctype="zh_cn.utf-8"
lc_numeric="zh_cn.utf-8"
lc_time="zh_cn.utf-8"
lc_collate="zh_cn.utf-8"
lc_monetary="zh_cn.utf-8"
lc_messages="zh_cn.utf-8"
lc_*****="zh_cn.utf-8"
lc_name="zh_cn.utf-8"
lc_address="zh_cn.utf-8"
lc_telephone="zh_cn.utf-8"
lc_measurement="zh_cn.utf-8"
lc_identification="zh_cn.utf-8"
lc_all=
本地化資訊包含了13個變數
lc_ctype
用於字元分類和字串處理(大小寫轉換),控制所有字元的處理方式,包括字元編碼,字元是單位元組還是多位元組,如何列印等。是最重要的乙個環境變數。
lc_collate
字元的比較和排序規則。
lc_monetary
貨幣格式。
lc_numeric
非貨幣的數字顯示格式。
lc_time
時間和日期格式。
lc_messages
提示資訊的語言。另外還有乙個language引數,它與lc_messages相似,但如果該引數一旦設定,則lc_messages引數就會失效。language引數可同時設定多種語言資訊,如languane=」zh_cn.gb18030:zh_cn.gb2312:zh_cn」。
lang
lc_*的預設值,是最低級別的設定,如果lc_*沒有設定,則使用該值。類似於 lc_all。如果lang設定了,別的變數也設定成這個值。
lc_all
它是乙個巨集,如果該值設定了,則該值會覆蓋所有lc_*的設定值。注意,lang的值不受該巨集影響。
lc_*****
紙張大小。
lc_name
名稱的格式
lc_address
位址的格式
lc_telephone
**的格式
lc_measurement
度量單位
可以看各種變數的值都是zh_cn.utf-8
,它表示什麼意思呢?
分為2個部分:
zh_cn
: 是語言.地點資訊
utf-8
: 是字元編碼資訊
其書寫格式是語言[_地域[.字符集]]
比如zh_cn.utf-8
說明現在用中文,地處中華人民共和國,用的是utf-8字元編碼。
比如zh_tw.big5
說名現在用中文,地處台灣,用的是大五碼字符集
可以通過locale -a
命令檢視支援的地點
$ locale -a
c #最早期簡單的c語言環境
c.utf-8
en_us.utf8 #美國
posix #posix標準
zh_cn.utf8 #中國
zh_sg.utf8 #新加坡
可以通過locale -m
命令檢視支援的編碼
$ locale -m
| grep big
big5
big5-hkscs
utf-
8gb18030
gb2312
gbkgb_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_za
有時候因為編碼的不同,顯示出來的是亂碼。那麼如何設定呢?
設定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: 除了環境變數設定對,如果使用的是圖形化終端,還需要在終端設定相應的編碼。
本地化 日誌本地化
目錄 概要執行時日誌 國際化與本地化 定義你的本地化日誌資訊mymsg enum package org.skzr.logging basename charset utf 8 value org.skzr.logging.msglocallog public enum mymsg 定義國際化檔案o...
Swift 匯出本地化和匯入本地化
一。匯出本地化 1.如下設定,來新增本地化語言 2.匯出檔案 儲存完成後 生成以下兩個檔案 然後用xlifftool 分別開啟以上兩個檔案 在以下顯示 no translation 的地方,新增英文所要替代的語言,如下所示 然後儲存就可以了 二.匯入本地化 1.按如下步驟 2.新增 3新增後出現以下...
本地化UIImagePicker中的文字
專案中經常會用到uiimagepicker類來取得系統相簿中的,但是細心的人會發現uiimagepicker控制項裡的文字不論在什麼語言下都只有英文版本,這讓非英語應用在使用uiimagepicker時感覺很尷尬。那麼有沒有什麼辦法把上圖中的 cancel use 和 move and scale ...