‘LC_CTYPE’ 中的 ’en_AU’ 的相關性是什麼?locale LC_CTYPE
輸出到底是什麼?
首先:雖然我可以理解 LC_TIME、LC_NUMERIC 和大多數其他 LC_* 變數的地理區域詳細資訊的相關性,但我不太明白 ’en_AU’ 與 LC_CTYPE 的關係…
不是 UTF-8(和其他編碼)本身有足夠的定義(對於 LC_CTYPE),因為和定義的編碼是一致的?…
在我寫的時候想,可能是世界不同地區的小寫字母不同
iconv
……想,因為它不要求語言環境,它只要求輸入編碼格式。iconv
我的下一個難題是:輸出中的行項目是
locale LC_CTYPE
指什麼,和/或哪裡是獲得佈局的好地方…也許更相關的問題是:由誰以及在哪裡提供此資訊需要嗎?..我很確定我不需要它…但這一切都有助於填寫“腳本”和“編碼”和“語言環境”的圖片;一旦你離開ASCII 的世界,這令人驚訝地不平凡。
所有語言環境變數都使用相同的語言環境名稱,以便您可以一舉指定您最喜歡的語言環境,例如
LANG=en_AU.utf8
. 正如您推測的那樣,國家資訊有時甚至在 中也有相關性,例如,大多數語言中LC_CTYPE
的大寫版本i
是土耳其語 ( )。但不要指望奇蹟;例如,小寫與大寫的對應是一一對應的,因此in沒有好的大寫版本(應該是)。I``İ``tr_TR.utf8``ß``de_DE.iso8859-1``SS
您將更容易理解 的輸出
locale -k LC_CTYPE
,-k
查看關鍵字名稱以及值(沒有-k
,輸出格式設計為您可以獲得特定關鍵字的值,例如locale ctype-width
)。關鍵字列表及其含義與系統相關,語言環境數據的儲存方式也是如此,並且對很多人不感興趣,因此您可能在 C 庫的原始碼之外找不到太多文件。到目前為止,locale 命令最有用的形式是locale -a
列出可用的語言環境名稱。對於GNU libc(即非嵌入式 Linux):
- 除消息外的所有語言環境數據都儲存在
/usr/lib/locale/locale-archive
. 該文件由localedef
from/usr/share/i18n
和中的數據生成/usr/local/share/i18n
。我認為,語言環境定義文件的格式/usr/share/i18n/locales
僅記錄在原始碼中。- POSIX:2001對字元集和編碼定義文件的格式進行了
/usr/share/i18n/charmaps
標準化。這些文件(或者,在GNU libc中,在 中的編譯版本)由iconv程式和命令行工具使用。編碼轉換也依賴於. Gnu libc 手冊記錄瞭如何編寫自己的 gconv 模組,儘管該部分包含文本“這些資訊應該足以編寫新模組。任何這樣做的人也應該看看 GNU C 庫原始碼中的可用原始碼。”。/usr/lib/locale/locale-archive
/usr/lib/gconv/*.so
- 消息目錄得到特殊處理,因為每個應用程序都有自己的集合。消息目錄位於
/usr/share/locale/*/LC_MESSAGES
. 該手冊包含應用程序編寫者的文件。GNU libc 支持POSIX 介面catgets
和更強大的gettext 介面。書面語言確實非常複雜,即使您與英語相差不遠。法語和德語是否是
ü
同一個字元(“tréma”與“元音變音”完全一樣,法語和德語的印刷商將重音排版的高度略有不同是否重要)?i
(它是İ
土耳其語)的大寫字母是什麼?如果您只有 ASCII(在德語中,它是),是否Ö
音譯為?在字典中排序在哪裡(在瑞典語中,它在 之後)?這只是用拉丁字母書寫的歐洲語言的幾個例子!Unicode 郵件列表中有很多範例,有時還會就此類主題進行激烈討論。O``OE``Ä``Z