Provided by: manpages-zh_1.6.4.0-1_all bug

NAME

       setlocale - 設定當前的區域選項

總覽 (SYNOPSIS)

       #include <locale.h>

       char *setlocale(int category, const char * locale);

描述 (DESCRIPTION)

       setlocale() 函式 用來 設定 或者 查詢 程式 當前 的 區域選項.

       如果  locale 不是 NULL, 程式 就會 根據 引數 更改 相應的 區域選項.  category 引數 指定 區域
       選項 的 哪一部分 需要 更改.

       LC_ALL 代表 所有 部分.

       LC_COLLATE
              代表 正則 表示式 匹配 (和 範圍 表示式[range expressions] 以及 字元類[classes]  有關
              係) 和 字串 排序.

       LC_CTYPE
              代表  正則 表示式 匹配, 字元類(character classification), 轉換, 區分大小寫 的 比較,
              以及 寬字元 函式.

       LC_MESSAGES
              代表 可以 本地化的 訊息 (自然語言).

       LC_MONETARY
              代表 貨幣 格式.

       LC_NUMERIC
              代表 數字 格式 (比如 小數點 和 千位分組符).

       LC_TIME
              代表 時間 和 日期 格式.

       locale 引數 是 一個 指向 字串的 指標. 此 字串 為 category 需要的 設定. 此 字串 可以是 一個
       眾所周知  的 區域選項 常量, 如 "C" 或 "da_DK" (見下), 也可以是 另外 一個 setlocale 呼叫 返
       回 的 字串.

       如果 locale"", 需要 更改 的 部分 會根據 環境變數 做 相應的 設定. 具體的 和 實現  有關.
       對於 glibc 來說, 首先 檢視 環境變數 LC_ALL (不管 category),然後檢視category (LC_COLLATE,
       LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) 同名的 環境變數, 最後 檢視 環境變
       數  LANG. 以 先查到 的 環境變數 為準. 如果 其值 不是 一個 有效 的 區域選項, 區域選項 將 不
       會改變, setlocale 會 返回 NULL.

       標準 區域選項 "C""POSIX" 是 可移植的; 它的 LC_CTYPE 部分 對應的 是 7 位的  ASCII  字符
       集.

       一個  典型的  區域選項  有  如下的  格式:  language[_territory][.codeset][@modifier], 其中
       language 是 一個 ISO 639 語言 程式碼, territory 是 一個 ISO 3166 國家 程式碼,  codeset  是
       一個  象 ISO-8859-1 或者 UTF-8 的 字符集 或者 編碼 識別符號. 用 "locale -a", cf. locale(1)
       可以 獲得 一個 系統 支援的 區域選項 的 列表.

       如果 localeNULL, 意味著 只是 查詢 當前 的 區域選項 而不 更改它.

       當 main 程式 開始的 時候 可移植的 "C" 區域選項 作為 預設值 被設定. 一個 程式 可以 在  初始
       化  之後 呼叫 setlocale(LC_ALL, "" ) 函式, 並且 從 localeconv() 呼叫 的 返回 中 獲得 和 區
       域選項 相關的 資訊, 如果 MB_CUR_MAX > 1 就用 多位元組 和 寬位元組 函式 來  處理  文字,  用
       strcoll(), wcscoll() 或者 strxfrm(), wcsxfrm() 來 比較 字串, 這樣 就可以 使 程式 有 較好的
       移植性.

返回值 (RETURN VALUE)

       一個 成功的 setlocale() 呼叫 會 返回 一個 表示 當前 區域選項 的 字串 (指標). 這個 字串  可
       能  是在  靜態 儲存區 中 分配 的. 之後 用 相應的 category 和 這個 字串 作為 引數 再去 呼叫
       這個 函式 會 重新 把 程式 區域選項 的 相應 部分 恢復. 如果 請求 不能 完成 將會 返回 NULL .

遵循 (CONFORMING TO)

       ANSI C, POSIX.1

注意 (NOTES)

       Linux (也就是, GNU libc) 支援 可移植的 "C""POSIX" 區域選項. 在 以前 它 曾經 支援  歐洲
       Latin-1  區域選項  "ISO-8859-1"  (比如說  在  libc-4.5.21  和 libc-4.6.27 中), 和 俄羅斯的
       "KOI-8" (更 準確點 是, "koi-8r") 區域選項 (比如 在 libc-4.6.27 中), 所以 設定 一個  環境變
       數  LC_CTYPE=ISO-8859-1 就 能夠 讓 isprint() 返回 正確的 結果. 現在 不講 英語 的 歐洲人 會
       比以前 更麻煩 一些, 他們 需要 安裝 相應 的 區域選項 檔案.

參見 (SEE ALSO)

       locale(1), localedef(1), strcoll(3), isalpha(3), localeconv(3), strftime(3),  charsets(4),
       locale(7)

[中文版維護人]

       唐友 <tony_ty@263.net>

[中文版最新更新]

       2001/12/2

[中國Linux論壇man手冊頁翻譯計劃]

       http://cmpp.linuxforum.net

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh