我已通过以下方式将系统区域设置为中文(简体中国)
ControlPanel >> Region and Language >> Administrative >> Change System locale
然后我重新启动计算机并运行我的 .NET 4.0 应用程序。
跑步
Thread.CurrentThread.CurrentCulture.Name
退货
en-GB
为什么?
MSDN说
信息(例如默认文化和格式模式)在第一次被请求时被缓存。该信息可能会在 AppDomain 的生命周期内发生变化,例如,当用户修改控制面板的区域和语言选项部分时。但是,CultureInfo 类不会自动检测系统设置的变化。
先调用这个
Thread.CurrentThread.CurrentCulture.ClearCachedData();
看起来可以看到系统语言环境的地方是 System.Text.Encoding.Default
PS:“...更改系统区域设置”会影响用于“非 Unicode”应用程序的 ANSI 代码页(来自 Win32 API 的 *A() 调用)。在大多数情况下,.NET 应用程序不需要关心它,因为它们使用 Unicode 字符串和 Unicode API。但是我必须与非 unicode 应用程序交互,所以我需要查询当前系统语言环境。