Provided by:
manpages-zh_1.5.1-1_all 
NAME
setlocale - 設置當前的區域選項
` (SYNOPSIS)
#include <locale.h>
char *setlocale(int category, const char * locale);
yz (DESCRIPTION)
setlocale() 函數 用來 設置 或者 查詢 程式 當前 的 區域選項.
如果 locale 不是 NULL, 程式 就會 根據 參數 更改 相應的 區域選項.
category 參數 指定 區域選項 的 一部分 需n 更改.
LC_ALL 代表 所有 部分.
LC_COLLATE
代表 正則 表達式 匹配 (和 S圍 表達式[range expressions] 以及
字符類[classes] 有關系) 和 字符串 排序.
LC_CTYPE
代表 正則 表達式 匹配, 字符類(character classification), 轉換,
區分大小寫 的 比較, 以及 寬字符 函數.
LC_MESSAGES
代表 可以 本地化的 消息 (自然語言).
LC_MONETARY
代表 貨幣 格式.
LC_NUMERIC
代表 數字 格式 (比如 小數點 和 千位分組符).
LC_TIME
代表 時間 和 日期 格式.
locale 參數 是 一 指向 字符串的 指針. 此 字符串 為 category 需n的
設置. 此 字符串 可以是 一 眾所周知 的 區域選項 常量, 如 "C" 或 "da_DK"
(見下), 也可以是 另外 一 setlocale 調用 返回 的 字符串.
如果 locale 是 "", 需n 更改 的 部分 會根據 環境變量 做 相應的 設置.
具體的 和 實現 有關. 對於 glibc 來說, 漸 查看 環境變量 LC_ALL (不管
category),M嶈d看Mcategory (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) 可以 獲得 一 系統 支持的 區域選項 的 列表.
如果 locale 是 NULL, 意味著 只是 查詢 當前 的 區域選項 而不 更改它.
當 main 程式 開始的 時 可移植的 "C" 區域選項 作為 預設 被設置. 一
程式 可以 在 初始化 之後 調用 setlocale(LC_ALL, "" ) 函數, 並且 從
localeconv() 調用 的 返回 中 獲得 和 區域選項 相關的 信息, 如果
MB_CUR_MAX > 1 就用 多字節 和 寬字節 函數 來 處理 文本, 用 strcoll(),
wcscoll() 或者 strxfrm(), wcsxfrm() 來 比較 字符串, 這樣 就可以 使 程式
有 較好的 移植性.
^ (RETURN VALUE)
一 成左 setlocale() 調用 會 返回 一 表示 當前 區域選項 的 字符串
(指針). 這 字符串 可能 是在 靜態 存儲區 中 分配 的. 之後 用 相應的
category 和 這 字符串 作為 參數 再去 調用 這 函數 會 奐s 把 程式
區域選項 的 相應 部分 恢復. 如果 請求 不能 完成 將會 返回 NULL .
` (CONFORMING TO)
ANSI C, POSIX.1
`N (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() 返回 正確的 結果. 現在 不講
^語 的 歐洲人 會 比以前 更麻煩 一些, 他 需n 安裝 相應 的 區域選項
檔案.
(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
[inuxanhttp://cmpp.linuxforum.net