Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Windows中的区域设置列表_C_Windows_Localization_Locale_Setlocale - Fatal编程技术网

C Windows中的区域设置列表

C Windows中的区域设置列表,c,windows,localization,locale,setlocale,C,Windows,Localization,Locale,Setlocale,在*nix系统上,您可以执行locale-a以获取可用的locale列表 Windows中的等效命令(或操作)是什么 我在互联网上看到过列表,但大多数列表都只是区域设置标签,而不是实际的区域设置名称。另外,并不是所有的系统都保证全部安装,对吗 请注意,我在这里对“locale”的定义是“locale string”,即C的setlocale()的第二个参数,它将导致非空返回值 编程回答也很好,我只是厌倦了暴力猜测Windows语言环境名称。起初,我找不到C/Win32 API来获取信息。(请参阅

在*nix系统上,您可以执行
locale-a
以获取可用的locale列表

Windows中的等效命令(或操作)是什么

我在互联网上看到过列表,但大多数列表都只是区域设置标签,而不是实际的区域设置名称。另外,并不是所有的系统都保证全部安装,对吗

请注意,我在这里对“locale”的定义是“locale string”,即C的
setlocale()
的第二个参数,它将导致非空返回值


编程回答也很好,我只是厌倦了暴力猜测Windows语言环境名称。

起初,我找不到C/Win32 API来获取信息。(请参阅稍后的编辑。)但是,.NET类似乎可以提供您需要的信息。具体请参见CultureInfo.GetCultures()。这一页似乎有一个你正在寻找的内容

编辑:如果您更喜欢C/Win32 API,请参阅()函数

编辑2:显示如何将LCID(从EnumSystemLocales()获取)转换为可由setlocale()使用的字符串。

似乎包含指向WIN32识别的语言和国家/地区列表的链接。然而:

可用语言集, 国家/地区代码和代码页 包括由 Win32 NLS API,但以下代码页除外: 要求每个字节超过两个字节 字符,例如UTF-7和UTF-8。如果 您可以提供类似UTF-7或 UTF-8,setlocale将失败,返回 空


失败。

那里的语言环境信息非常好,但是setlocale()仍然没有可用的语言环境字符串。【最后一个】示例只是一个开始,但我想知道它如何处理具有多个代码页的语言环境(更不用说语言或国家/地区)。看起来它只获取默认的ANSI代码页或默认代码页(如果不存在)。似乎还有默认的EBCDIC和MAC代码页。这并不重要;我得到了我的答案:不存在这样的效用;人们必须通读糟糕的NLS文档,并以编程方式生成和消除区域名称。然而,我仍然对UTF-16的支持感到好奇。更不用说UTF-32了。例如,为什么不?:)@mlvljr:耸耸肩,我想这是因为UTF-32肯定需要每个字符超过两个字节(UTF-16也是如此,但UTF-32做得更多-一些要求比其他要求更高?)。