首页 新闻 会员 周边

关于setlocale函数的参数问题

0
悬赏园豆:15 [待解决问题]

先上代码

wchar_t ss[10];
char *p;

ss[0] = _T('中');
ss[1] = _T('文');
ss[2] = _T('\0');

p = setlocale(LC_ALL, "zh-CN");

wprintf(L"%ls\n", ss);
printf("%s\n", p);

在用宽字符数组输出中文的时候用setlocale来设置地域,在使用第二个参数的时候出现了一点问题
(运行环境VC2010Express)

setlocale(LC_ALL, "chs");

或者

setlocale(LC_ALL, "");

都可以能正常输出中文汉字

但是我在微软的手册里面查不到chs这个参数,如下图

但是上图的所有参数,无论是简体中文还是繁体中文的参数在VC2010下使用都无法正常使用(意思是setlocale失败,返回值为NULL)
例如:

p = setlocale(LC_ALL, "zh-CN");

运行结果:

但是我在VS2017下测试了setlocale函数,发现上面微软手册里的所有简体中文还是繁体中文的参数都可以正常使用

p = setlocale(LC_ALL, "zh-CN");

运行结果:

还有一点非常奇怪的,我随便输了一个手册里面没有的参数,居然还能正常输出中文

问题一:chs这个参数在微软手册上查不到,为什么还能使用,我看到网上很多博客都使用的chs这个参数(微软手册链接:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c

问题二:为什么在VC2010下,上面这些参数不能用,但是在VS2017下却都可以使用

问题三:为什么随便输入了一个参数zh-NC(手册里没有这个参数),却仍然能输出中文汉字

Luv3的主页 Luv3 | 初学一级 | 园豆:52
提问于:2019-04-13 14:34
< >
分享
所有回答(1)
0

1 是否使用了utf-8
2 zh-CN.GBK

WEIXIN_398529324 | 园豆:216 (菜鸟二级) | 2019-04-13 17:03

能详细点吗?

支持(0) 反对(0) Luv3 | 园豆:52 (初学一级) | 2019-05-07 20:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册