Provided by: manpages-zh_1.5.2-1.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