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

Locale format for various operating systems

本文关键字:设置 格式 区域 操作系统      更新时间:2023-10-16
char *currentLocale = setlocale(LC_ALL,"");

在 Windows setlocale 中返回"English_United状态",但在 linux 中它会重新运行"en_US"。是否有识别英语区域设置的通用方法?或者我必须检查所有可用的区域设置值?("English_United州" ||"en_US" ||等(

您可能需要检查:

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

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

理论上,Windows、Linux、MAc和其他操作系统可能有支持"语言下划线国家"格式的函数库,即使它们有自己的内部标准:

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

在这种情况下,

Windows似乎是唯一的异常值 - 大多数操作系统使用(更明智的("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

它不是很漂亮,但它应该可以工作。