各种操作系统的区域设置格式

时间:2012-07-12 18:06:05

标签: c++ c locale

char *currentLocale = setlocale(LC_ALL,"");

在windows中,setlocale返回“English_United States”,但在linux中它会重新输入“en_US”。是否有识别英语语言环境的通用方法?或者我必须查看所有可用的语言环境值? (“English_United States”||“en_US”|| etc)

2 个答案:

答案 0 :(得分:1)

您可能需要查看:

http://en.wikipedia.org/wiki/Locale

http://en.wikipedia.org/wiki/ISO_639

理论上,Windows,Linux,MAc和其他O.S.可能有支持“语言下划线国家”格式的函数库,即使它们有内部标准:

http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

答案 1 :(得分:0)

在这种情况下,Windows似乎是唯一的异常值 - 大多数操作系统使用(saner)“en_US”格式。您可以使用#ifdef之类的东西为Windows编译器提供自定义代码:

#ifdef __unix__
setlocale(LC_ALL, "en_US");
#elif defined _WIN32
setlocale(LC_ALL, "English");
#else
#error "Can't figure out how to set locale to English. Stop.";
#endif

它不是很漂亮,但它应该有用。