.NET中的系统区域设置

本文关键字:区域 设置 系统 NET | 更新日期: 2023-09-27 18:27:03

我已通过将系统区域设置为中文(简体中文)

ControlPanel >> Region and Language >> Administrative >> Change System locale

然后,我重新启动了电脑,运行了.NET 4.0应用程序。

运行

Thread.CurrentThread.CurrentCulture.Name

返回

en-GB

为什么?

.NET中的系统区域设置

MSDN说

默认区域性和格式模式等信息在第一次请求时缓存。这些信息可能会改变在AppDomain的生命周期内,例如,当用户修改控制面板的区域和语言选项部分。然而CultureInfo类不会自动检测系统设置。

调用第一个

 Thread.CurrentThread.CurrentCulture.ClearCachedData();

查看系统区域设置的位置似乎是system.Text.Encoding.Default

PS:"…更改系统区域设置"会影响用于"非Unicode"应用程序的ANSI代码页(来自Win32 API的*A()调用)。在大多数情况下,.NET应用程序不需要关心它,因为它们使用Unicode字符串和Unicode API。但我必须与非unicode应用程序交互,所以我需要查询当前的系统区域设置。