C# NET中的系统区域设置
我已通过将系统区域设置设置为中文(简体PRC) 然后我重新启动了计算机并运行了.NET4.0应用程序 运行C# NET中的系统区域设置,c#,locale,culture,C#,Locale,Culture,我已通过将系统区域设置设置为中文(简体PRC) 然后我重新启动了计算机并运行了.NET4.0应用程序 运行 Thread.CurrentThread.CurrentCulture.Name 返回 en-GB 为什么?这么说 默认区域性和格式模式等信息是 在第一次请求时将其缓存。这些信息可以改变 在AppDomain的生命周期内,例如,当用户修改 控制面板的区域和语言选项部分。然而, CultureInfo类不会自动检测数据库中的更改 系统设置 先叫这个 Thread.CurrentThre
Thread.CurrentThread.CurrentCulture.Name
返回
en-GB
为什么?这么说
默认区域性和格式模式等信息是
在第一次请求时将其缓存。这些信息可以改变
在AppDomain的生命周期内,例如,当用户修改
控制面板的区域和语言选项部分。然而,
CultureInfo类不会自动检测数据库中的更改
系统设置
先叫这个
Thread.CurrentThread.CurrentCulture.ClearCachedData();
看起来要查看系统区域设置的位置是system.Text.Encoding.Default
注:“…更改系统区域设置”影响用于“非Unicode”应用程序的ANSI代码页(来自Win32 API的*A()调用)。在大多数情况下,.NET应用程序不需要关心它,因为它们使用Unicode字符串和Unicode API。但是我必须与非unicode应用程序交互,因此我需要查询当前系统区域设置。请尝试:Thread.CurrentThread.CurrentUICulture.Name(注意UI)我获得了与
Thread.CurrentThread.CurrentUICulture.Name
相同的行为,我可以通过将区域和语言>>格式设置为中文(简体PRC)
来获得Thread.CurrentThread.CurrentCulture.Name
以返回预期值。这是预期的行为吗?.NET中公开的区域性似乎只受此“格式”设置的影响。@Ben我没有收到您的问题更改控制面板>>区域和语言>>管理>>更改系统区域设置
似乎没有更改线程.CurrentThread.CurrentCulture.Name
中公开的值。相反,根据我的实验,设置控制面板>>区域和语言>>格式
就行了。这是根据你的理解。我假设在控制面板中设置“区域设置”将在.NET中设置区域设置。我必须检查System Local的更改。尽管MSDN确实指出更改默认格式会影响区域性
Thread.CurrentThread.CurrentCulture.ClearCachedData();