linux中的本地化

2021-07-24 18:36:28 字數 3483 閱讀 4080

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_alllang。它們之間有乙個優先順序的關係:

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 ...