char* setlocale(int category,
const char *locale)
设置指定类别
(category
)的本地
(locale
)。
int category
表示本地
的类别。可使用下列宏
:
宏 | libc | 说明 |
LC_ALL | POSIX | 代表所有类别 |
LC_CTYPE | POSIX | 定义系统的字符处理特性。哪些字符能被视为字母、数字,等等;与中文输入关系密切 |
LC_COLLATE | POSIX | 比较和排序习惯。会影响目录列表的排列顺序 |
LC_TIME | POSIX | 日期和时间的格式 |
LC_NUMERIC | POSIX | 定义非货币型数值的格式。影响到千位分隔符和小数分隔符等 |
LC_MONETARY | POSIX | 定义货币单位和货币型数值的格式 |
LC_MESSAGES | POSIX | 提示信息、错误信息、状态信息、标题、标签、按钮和菜单等 |
LC_NAME | glibc | 姓名书写格式 |
LC_TELEPHONE | glibc | 电话号码书写方式 |
LC_ADDRESS | glibc | 地址书写方式 |
LC_PAPER | glibc | 定义默认的纸张尺寸 |
LC_MEASUREMENT | glibc | 度量衡表达方式 |
LC_IDENTIFICATION | glibc | 对 locale 自身包含信息的概述 |
char *locale
表示本地
。
char *locale
的值可以是如下形式:
<ISO-639 Language Code>_<ISO-3166 Country/Region Code>[.<Charactor Coding>]
示例:
zh_CN
zh_CN.UTF-8
en_US
en_US.ISO8859-1
另外,有2
个特殊的<ISO-639 Language Code>_<ISO-3166 Country/Region Code>
:C
、POSIX
char *locale
的取值可以通过locale -a命令获得。
若成功,则返回char *locale
。
若失败,则返回NULL
。
#include <stdio.h>
#include <locale.h>
int main(int argc, char* argv[]) {
if (1 == argc) {
printf("请输入locale\n");
return 1;
}
char *locale = setlocale(LC_ALL, argv[1]);
if (NULL == locale) {
printf("%s 设置失败\n", argv[1]);
} else {
printf("%s 设置成功\n", argv[1]);
}
return 0;
}
使用cc命令编译 ⤵︎
cc -o test_locale test.c
运行结果如下 ⤵︎
./test_locale zh_CN.UTF-8
zh_CN.UTF-8 设置成功
./test_locale zh_CN.UTF8
zh_CN.UTF8 设置失败