SETLOCALE
Section: Linux Programmer's Manual (3)
Updated: 1999-07-04
查看本页索引
返回目录
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)
可以 获得 一个 系统 支持的 区域选项 的 列表.
如果
locale
是
NULL,
意味着 只是 查询 当前 的 区域选项 而不 更改它.
当 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
Index
- NAME
-
- 总览 (SYNOPSIS)
-
- 描述 (DESCRIPTION)
-
- 返回值 (RETURN VALUE)
-
- 遵循 (CONFORMING TO)
-
- 注意 (NOTES)
-
- 参见 (SEE ALSO)
-
- [中文版维护人]
-
- [中文版最新更新]
-
- [中国Linux论坛man手册页翻译计划]
-
-
This document was created by
man2html,
using the manual pages.
Time: 03:17:24 GMT, July 01, 2024