資料介紹
locale 詳解
locale 是國際化與本土化過程中的一個非常重要的概念,個人認為,對于中文用戶來說,通常會涉及到的國際化或者本土化,大致包含三個方面:看中文,寫中文,與 window中文系統的兼容和通信。從實際經驗上看來,locale的設定與看中文關系不大,但是與寫中文,及window分區的掛載方式有很密切的關系。本人認為就像一個純英文的Windows能夠瀏覽中文,日文或者意大利文網頁一樣,你不需要設定locale就可以看中文。那么,為什么要設定 locale呢?什么時候會用到locale呢?
Tags: locale 設定 原因 解釋
一、為什么要設定locale 正如前面我所講的,設定locale與你能否瀏覽中文的網頁沒有直接的關系,即便你把locale設置成en_US.ISO-8859-1這樣一個標準的英文locale你照樣可以瀏覽中文的網頁,只要你的系統里面有相應的字符集(這個都不一定需要)和合適的字體(如simsun),瀏覽器就可以把網頁翻譯成中文給你看。具體的過程是網絡把網頁傳送到你的機器上之后,瀏覽器會判斷相應的編碼的字符集,根據網頁采用的字符集,去字體庫里面找合適的字體,然后由文字渲染工具把相應的文字在屏幕上顯示出來。
在下文本人會偶爾把字符集比喻成密碼本,個人覺得對于一些東西比較容易理解,假如你不習慣的話,把全文copy到任何文本編輯器,用字符集替換密碼本即可。
那有時候網頁顯示亂碼或者都是方框是怎么回事呢?個人認為,顯示亂碼是因為設定的字符集不對(或者沒有相應的字符集),例如網頁是用UTF-8編碼的,你非要用GB2312去看,而系統根據GB2312去找字體,然后在屏幕上顯示,當然是一堆的亂碼,也就是說你用一個錯誤的密碼本去翻譯發給你的電報,當然內容那叫一個亂;至于有些時候瀏覽的網頁能顯示一部分漢字,但有很多的地方是方框,能夠顯示漢字說明瀏覽器已經正確的判斷出了網頁的編碼,并在字體庫里面找到了相應的文字,但是并不是每個字體庫都包含某個字符集全部的字體的緣故,有些時候會顯示不完全,找一個比較全的支持較多字符集的字體就可以了。
既然我能夠瀏覽中文網頁,那為什么我還要設定locale呢?
其實你有沒有想過這么一個問題,為什么gentoo官方論壇上中文論壇的網頁是用UTF-8編碼的(雖然大家一直強烈建議用GB2312編碼),但是新浪網就是用GB2312編碼的呢?而Xorg的官方網頁竟然是ISO-8859-15編碼的,我沒有設定這個locale怎么一樣的能瀏覽呢?這個問題就像是你有所有的密碼本,不論某個網站是用什么字符集編碼的,你都可以用你手里的密碼本把他們翻譯過來,但問題是雖然你能瀏覽中文網頁,但是在整個操作系統里面流動的還是英文字符。所以,就像你能聽懂英語,也能聽懂中文。 最根本的問題是:你不可以寫中文。
當你決定要寫什么東西的時候,首先要決定的一件事情是用那種語言,對于計算機來說就是你要是用哪一種字符集,你就必須告訴你的linux系統,你想用那一本密碼本去寫你想要寫的東西。知道為什么需要用GB2312字符集去瀏覽新浪了吧,因為新浪的網頁是用GB2312寫的。
為了讓你的Linux能夠輸入中文,就需要把系統的locale設定成中文的(嚴格說來是locale中的語言類別LC_CTYPE ),例如zh_CN.GB2312、zh_CN.GB18030或者zh_CN.UTF-8。很多人都不明白這些古里古怪的表達方式。這個外星表達式規定了什么東西呢?這個問題稍后詳述,現在只需要知道,這是locale的表達方式就可以了。
二、到底什么是locale? locale這個單詞中文翻譯成地區或者地域,其實這個單詞包含的意義要寬泛很多。Locale是根據計算機用戶所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的一個軟件運行時的語言環境。
這個用戶環境可以按照所涉及到的文化傳統的各個方面分成幾個大類,通常包括用戶所使用的語言符號及其分類(LC_CTYPE),數字 (LC_NUMERIC),比較和排序習慣(LC_COLLATE),時間顯示格式(LC_TIME),貨幣單位(LC_MONETARY),信息主要是提示信息,錯誤信息, 狀態信息, 標題, 標簽, 按鈕和菜單等(LC_MESSAGES),姓名書寫方式(LC_NAME),地址書寫方式(LC_ADDRESS),電話號碼書寫方式 (LC_TELEPHONE),度量衡表達方式(LC_MEASUREMENT),默認紙張尺寸大?。↙C_PAPER)和locale對自身包含信息的概述(LC_IDENTIFICATION)。
所以說,locale就是某一個地域內的人們的語言習慣和文化傳統和生活習慣。一個地區的locale就是根據這幾大類的習慣定義的,這些locale定義文件放在/usr/share/i18n/locales目錄下面,例如en_US, zh_CN and de_DE@euro都是locale的定義文件,這些文件都是用文本格式書寫的,你可以用寫字板打開,看看里邊的內容,當然出了有限的注釋以外,大部分東西可能你都看不懂,因為是用的Unicode的字符索引方式。
對于de_DE@euro的一點說明,@后邊是修正項,也就是說你可以看到兩個德國的locale: /usr/share/i18n/locales/de_DE@euro /usr/share/i18n/locales/de_DE 打開這兩個locale定義,你就會知道它們的差別在于de_DE@euro使用的是歐洲的排序、比較和縮進習慣,而de_DE用的是德國的標準習慣。
上面我們說到了zh_CN.GB18030的前半部分,后半部分是什么呢?大部分Linux用戶都知道是系統采用的字符集。
三、什么是字符集? 字符集就是字符,尤其是非英語字符在系統內的編碼方式,也就是通常所說的內碼,所有的字符集都放在/usr/share/i18n/charmaps,所有的字符集也都是用Unicode編號索引的。Unicode用統一的編號來索引目前已知的全部的符號。而字符集則是這些符號的編碼方式,或者說是在網絡傳輸,計算機內部通信的時候,對于不同字符的表達方式,Unicode是一個靜態的概念,字符集是一個動態的概念,是每一個字符傳遞或傳輸的具體形式。就像 Unicode編號U59D0是代表姐姐的“姐”字,但是具體的這個字是用兩個字節表示,三個字節,還是四個字節表示,是字符集的問題。例如:UTF-8字符集就是目前流行的對字符的編碼方式,UTF-8用一個字節表示常用的拉丁字母,用兩個字節表示常用的符號,包括常用的中文字符,用三個表示不常用的字符,用四個字節表示其他的古靈精怪的字符。而GB2312字符集就是用兩個字節表示所有的字符。需要提到一點的是Unicode除了用編號索引全部字符以外,本身是用四個字節存儲全部字符,這一點在談到掛載windows分區的時候是非常重要的一個概念。所以說你也可以把Unicode看作是一種字符集(我不知道它和UTF-32的關系,反正UTF-32就是用四個字節表示所有的字符的),但是這樣表述符號是非常浪費資源的,因為在計算機世界絕大部分時候用到的是一個字節就可以搞定的 26個字母而已。所以才會有UTF-8,UTF-16等等,要不然大同世界多好,省了這許多麻煩。
四、zh_CN.GB2312到底是在說什么? Locale 是軟件在運行時的語言環境, 它包括語言(Language), 地域 (Territory) 和字符集(Codeset)。一個locale的書寫格式為: 語言[_地域[。字符集]]。 所以說呢,locale總是和一定的字符集相聯系的。下面舉幾個例子:
1、我說中文,身處中華人民共和國,使用國標2312字符集來表達字符。 zh_CN.GB2312=中文_中華人民共和國+國標2312字符集。
2、我說中文,身處中華人民共和國,使用國標18030字符集來表達字符。 zh_CN.GB18030=中文_中華人民共和國+國標18030字符集。
3、我說中文,身處中華人民共和國臺灣省,使用國標Big5字符集來表達字符。 zh_TW.BIG5=中文_臺灣。大五碼字符集
4、我說英文,身處大不列顛,使用ISO-8859-1字符集來表達字符。 en_GB.ISO-8859-1=英文_大不列顛.ISO-8859-1字符集
5、我說德語,身處德國,使用UTF-8字符集,習慣了歐洲風格。 de_DE.UTF-8@euro=德語_德國.UTF-8字符集@按照歐洲習慣加以修正
注意不是de_DE@euro.UTF-8,所以完全的locale表達方式是 [語言[_地域][。字符集] [@修正值]
生成的locale放在/usr/lib/locale/目錄中,并且每個locale都對應一個文件夾,也就是說創建了de_DE@euro.UTF-8 locale之后,就生成/usr/lib/locale/de_DE@euro.UTF-8/目錄,里面是具體的每個locale的內容。
五、怎樣去自定義locale 在gentoo生成locale還是很容易的,首先要在USE里面加入userlocales支持,然后編輯locales.build文件,這個文件用來指示glibc生成locale文件。 很多人不明白每一個條目是什么意思。 其實根據上面的說明現在應該很明確了。
locale 是國際化與本土化過程中的一個非常重要的概念,個人認為,對于中文用戶來說,通常會涉及到的國際化或者本土化,大致包含三個方面:看中文,寫中文,與 window中文系統的兼容和通信。從實際經驗上看來,locale的設定與看中文關系不大,但是與寫中文,及window分區的掛載方式有很密切的關系。本人認為就像一個純英文的Windows能夠瀏覽中文,日文或者意大利文網頁一樣,你不需要設定locale就可以看中文。那么,為什么要設定 locale呢?什么時候會用到locale呢?
Tags: locale 設定 原因 解釋
一、為什么要設定locale 正如前面我所講的,設定locale與你能否瀏覽中文的網頁沒有直接的關系,即便你把locale設置成en_US.ISO-8859-1這樣一個標準的英文locale你照樣可以瀏覽中文的網頁,只要你的系統里面有相應的字符集(這個都不一定需要)和合適的字體(如simsun),瀏覽器就可以把網頁翻譯成中文給你看。具體的過程是網絡把網頁傳送到你的機器上之后,瀏覽器會判斷相應的編碼的字符集,根據網頁采用的字符集,去字體庫里面找合適的字體,然后由文字渲染工具把相應的文字在屏幕上顯示出來。
在下文本人會偶爾把字符集比喻成密碼本,個人覺得對于一些東西比較容易理解,假如你不習慣的話,把全文copy到任何文本編輯器,用字符集替換密碼本即可。
那有時候網頁顯示亂碼或者都是方框是怎么回事呢?個人認為,顯示亂碼是因為設定的字符集不對(或者沒有相應的字符集),例如網頁是用UTF-8編碼的,你非要用GB2312去看,而系統根據GB2312去找字體,然后在屏幕上顯示,當然是一堆的亂碼,也就是說你用一個錯誤的密碼本去翻譯發給你的電報,當然內容那叫一個亂;至于有些時候瀏覽的網頁能顯示一部分漢字,但有很多的地方是方框,能夠顯示漢字說明瀏覽器已經正確的判斷出了網頁的編碼,并在字體庫里面找到了相應的文字,但是并不是每個字體庫都包含某個字符集全部的字體的緣故,有些時候會顯示不完全,找一個比較全的支持較多字符集的字體就可以了。
既然我能夠瀏覽中文網頁,那為什么我還要設定locale呢?
其實你有沒有想過這么一個問題,為什么gentoo官方論壇上中文論壇的網頁是用UTF-8編碼的(雖然大家一直強烈建議用GB2312編碼),但是新浪網就是用GB2312編碼的呢?而Xorg的官方網頁竟然是ISO-8859-15編碼的,我沒有設定這個locale怎么一樣的能瀏覽呢?這個問題就像是你有所有的密碼本,不論某個網站是用什么字符集編碼的,你都可以用你手里的密碼本把他們翻譯過來,但問題是雖然你能瀏覽中文網頁,但是在整個操作系統里面流動的還是英文字符。所以,就像你能聽懂英語,也能聽懂中文。 最根本的問題是:你不可以寫中文。
當你決定要寫什么東西的時候,首先要決定的一件事情是用那種語言,對于計算機來說就是你要是用哪一種字符集,你就必須告訴你的linux系統,你想用那一本密碼本去寫你想要寫的東西。知道為什么需要用GB2312字符集去瀏覽新浪了吧,因為新浪的網頁是用GB2312寫的。
為了讓你的Linux能夠輸入中文,就需要把系統的locale設定成中文的(嚴格說來是locale中的語言類別LC_CTYPE ),例如zh_CN.GB2312、zh_CN.GB18030或者zh_CN.UTF-8。很多人都不明白這些古里古怪的表達方式。這個外星表達式規定了什么東西呢?這個問題稍后詳述,現在只需要知道,這是locale的表達方式就可以了。
二、到底什么是locale? locale這個單詞中文翻譯成地區或者地域,其實這個單詞包含的意義要寬泛很多。Locale是根據計算機用戶所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的一個軟件運行時的語言環境。
這個用戶環境可以按照所涉及到的文化傳統的各個方面分成幾個大類,通常包括用戶所使用的語言符號及其分類(LC_CTYPE),數字 (LC_NUMERIC),比較和排序習慣(LC_COLLATE),時間顯示格式(LC_TIME),貨幣單位(LC_MONETARY),信息主要是提示信息,錯誤信息, 狀態信息, 標題, 標簽, 按鈕和菜單等(LC_MESSAGES),姓名書寫方式(LC_NAME),地址書寫方式(LC_ADDRESS),電話號碼書寫方式 (LC_TELEPHONE),度量衡表達方式(LC_MEASUREMENT),默認紙張尺寸大?。↙C_PAPER)和locale對自身包含信息的概述(LC_IDENTIFICATION)。
所以說,locale就是某一個地域內的人們的語言習慣和文化傳統和生活習慣。一個地區的locale就是根據這幾大類的習慣定義的,這些locale定義文件放在/usr/share/i18n/locales目錄下面,例如en_US, zh_CN and de_DE@euro都是locale的定義文件,這些文件都是用文本格式書寫的,你可以用寫字板打開,看看里邊的內容,當然出了有限的注釋以外,大部分東西可能你都看不懂,因為是用的Unicode的字符索引方式。
對于de_DE@euro的一點說明,@后邊是修正項,也就是說你可以看到兩個德國的locale: /usr/share/i18n/locales/de_DE@euro /usr/share/i18n/locales/de_DE 打開這兩個locale定義,你就會知道它們的差別在于de_DE@euro使用的是歐洲的排序、比較和縮進習慣,而de_DE用的是德國的標準習慣。
上面我們說到了zh_CN.GB18030的前半部分,后半部分是什么呢?大部分Linux用戶都知道是系統采用的字符集。
三、什么是字符集? 字符集就是字符,尤其是非英語字符在系統內的編碼方式,也就是通常所說的內碼,所有的字符集都放在/usr/share/i18n/charmaps,所有的字符集也都是用Unicode編號索引的。Unicode用統一的編號來索引目前已知的全部的符號。而字符集則是這些符號的編碼方式,或者說是在網絡傳輸,計算機內部通信的時候,對于不同字符的表達方式,Unicode是一個靜態的概念,字符集是一個動態的概念,是每一個字符傳遞或傳輸的具體形式。就像 Unicode編號U59D0是代表姐姐的“姐”字,但是具體的這個字是用兩個字節表示,三個字節,還是四個字節表示,是字符集的問題。例如:UTF-8字符集就是目前流行的對字符的編碼方式,UTF-8用一個字節表示常用的拉丁字母,用兩個字節表示常用的符號,包括常用的中文字符,用三個表示不常用的字符,用四個字節表示其他的古靈精怪的字符。而GB2312字符集就是用兩個字節表示所有的字符。需要提到一點的是Unicode除了用編號索引全部字符以外,本身是用四個字節存儲全部字符,這一點在談到掛載windows分區的時候是非常重要的一個概念。所以說你也可以把Unicode看作是一種字符集(我不知道它和UTF-32的關系,反正UTF-32就是用四個字節表示所有的字符的),但是這樣表述符號是非常浪費資源的,因為在計算機世界絕大部分時候用到的是一個字節就可以搞定的 26個字母而已。所以才會有UTF-8,UTF-16等等,要不然大同世界多好,省了這許多麻煩。
四、zh_CN.GB2312到底是在說什么? Locale 是軟件在運行時的語言環境, 它包括語言(Language), 地域 (Territory) 和字符集(Codeset)。一個locale的書寫格式為: 語言[_地域[。字符集]]。 所以說呢,locale總是和一定的字符集相聯系的。下面舉幾個例子:
1、我說中文,身處中華人民共和國,使用國標2312字符集來表達字符。 zh_CN.GB2312=中文_中華人民共和國+國標2312字符集。
2、我說中文,身處中華人民共和國,使用國標18030字符集來表達字符。 zh_CN.GB18030=中文_中華人民共和國+國標18030字符集。
3、我說中文,身處中華人民共和國臺灣省,使用國標Big5字符集來表達字符。 zh_TW.BIG5=中文_臺灣。大五碼字符集
4、我說英文,身處大不列顛,使用ISO-8859-1字符集來表達字符。 en_GB.ISO-8859-1=英文_大不列顛.ISO-8859-1字符集
5、我說德語,身處德國,使用UTF-8字符集,習慣了歐洲風格。 de_DE.UTF-8@euro=德語_德國.UTF-8字符集@按照歐洲習慣加以修正
注意不是de_DE@euro.UTF-8,所以完全的locale表達方式是 [語言[_地域][。字符集] [@修正值]
生成的locale放在/usr/lib/locale/目錄中,并且每個locale都對應一個文件夾,也就是說創建了de_DE@euro.UTF-8 locale之后,就生成/usr/lib/locale/de_DE@euro.UTF-8/目錄,里面是具體的每個locale的內容。
五、怎樣去自定義locale 在gentoo生成locale還是很容易的,首先要在USE里面加入userlocales支持,然后編輯locales.build文件,這個文件用來指示glibc生成locale文件。 很多人不明白每一個條目是什么意思。 其實根據上面的說明現在應該很明確了。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 《LED燈具設計與案例詳解》pdf 0次下載
- 系統方框圖資料詳解 0次下載
- 電氣信息工程叢書之Linux PowerPC詳解-核心篇 0次下載
- 第六課 數控機床電路詳解 0次下載
- 詳解SUNLORD順絡LED照明 18次下載
- 開關電源的工作原理及電路組成詳解 263次下載
- 開關電源原理及輸入電路詳解 120次下載
- Linux系統中EXP命令詳解質量匯總 1次下載
- Power BI服務所包含的信息及數據詳解 0次下載
- BLE實驗詳解之藍牙溫度計設計方案 25次下載
- BLE實驗詳解之藍牙血壓計設計方案 36次下載
- 自動控制原理習題詳解第二版下載 0次下載
- 蘋果iPhone 6SP相關線路詳解 17次下載
- 《Python開發技術詳解》-隨書附帶程序 0次下載
- LED照明產品日本PSE認證中文詳解 28次下載
- 拖動系統基本控制電路詳解 446次閱讀
- kafka相關命令詳解 706次閱讀
- BGA和CSP封裝技術詳解 2038次閱讀
- STM32庫函數SystemInit()詳解 3341次閱讀
- 無功補償原理基礎知識詳解 722次閱讀
- WAT技術詳解 972次閱讀
- 物理設計中的問題詳解 757次閱讀
- 一文詳解分立元件門電路 2437次閱讀
- 一文詳解Linux下的Locale 838次閱讀
- 一文詳解精密封裝技術 1514次閱讀
- LC振蕩電路原理詳解 2789次閱讀
- 積分與微分電路原理詳解 2001次閱讀
- 詳解String對象的內存分配 2150次閱讀
- Prelink的交叉編譯和使用詳解 3370次閱讀
- DNA螺旋臺燈制作詳解 3655次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多