首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows:从区域设置字符串中获取LCID?

Windows:从区域设置字符串中获取LCID?
EN

Stack Overflow用户
提问于 2010-07-14 03:10:57
回答 2查看 3.2K关注 0票数 3

我有代表地区的字符串数据,比如"fr“或"en”。我需要将其转换为适当的LCID值,如0x80c0x409。有没有这样做的函数或宏?

我在Windows7上使用的是C++。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-14 05:15:00

这些是LCID值,不确定LID是什么意思。您可以从GetLocaleInfoEx()中获取它们,在Vista及更高版本中提供。您需要传递一个区域设置名称,如"en-US",这是确定语言区域设置所必需的。例如:

代码语言:javascript
复制
#include "stdafx.h"
#include <windows.h>
#include <assert.h>

int _tmain(int argc, _TCHAR* argv[])
{
    LCID lcid = 0;
    BOOL ok = GetLocaleInfoEx(L"en-US", LOCALE_RETURN_NUMBER | LOCALE_ILANGUAGE, (LPWSTR)&lcid, sizeof(lcid));
    assert(ok);
    wprintf(L"LCID = %04x\n", lcid);
    return 0;
}

输出: LCID = 0409

票数 4
EN

Stack Overflow用户

发布于 2010-07-14 03:20:23

显然不在Windows API中。事实上,我找不到任何合适的函数herehere

我想最好的做法是添加一个包含所有缩写及其LCID的资源文本文件,然后自己编写一个LocaleStringToLCID函数。但是我想知道你在哪里可以找到这两个字母的缩写。MSDN页http://msdn.microsoft.com/en-us/library/aa912040.aspx仅使用全长和TLA区域设置字符串。也许在这里:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

更新

我现在看到OP发布的链接http://msdn.microsoft.com/en-us/library/aa912040.aspx适用于Windows Mobile,而不是桌面操作系统!因此,我也看错了文档!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3240556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档