.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
为什么?
默认区域性和格式模式等信息在第一次请求时缓存。这些信息可能会改变在AppDomain的生命周期内,例如,当用户修改控制面板的区域和语言选项部分。然而CultureInfo类不会自动检测系统设置。
调用第一个
Thread.CurrentThread.CurrentCulture.ClearCachedData();
查看系统区域设置的位置似乎是system.Text.Encoding.Default
PS:"…更改系统区域设置"会影响用于"非Unicode"应用程序的ANSI代码页(来自Win32 API的*A()调用)。在大多数情况下,.NET应用程序不需要关心它,因为它们使用Unicode字符串和Unicode API。但我必须与非unicode应用程序交互,所以我需要查询当前的系统区域设置。