使用 CurrentCulture 属性
CurrentCulture 属性表示每个线程的当前区域性信息。 此信息确定了日期、时间、货币和数字的默认格式,文本的排序顺序,字符串比较方式以及大小写。 通过此属性进行的设置不是语言设置。 此属性仅定义与地理区域的标准设置相关的数据。 因此,应用程序只能将 CurrentCulture 设置为特定区域性或设置为 InvariantCulture。 应用程序可以使用 CurrentThread 属性来设置 CurrentCulture。
注意 |
---|
更改 CurrentThread 的区域性需要使用设置了 ControlThread 的 SecurityPermission。由于安全状态与线程关联,对线程进行操作是危险的。因此,应只向可信代码授予该权限,并且只在必要的时候才授予该权限。不能在不完全受信任的代码中更改线程区域性。 |
显式设置 CurrentCulture 属性
应用程序可以显式设置 CurrentCulture 属性。 下面的代码示例将该属性设置为特定区域性德语(德国),即“de-DE”。
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE")
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
应用程序必须使用特定区域性来初始化 CurrentCulture 属性。 该属性要求区域性同时与语言和国家/地区关联,如英语(美国),即“en-US”。 由于一种语言往往在多个国家/地区使用,因此需要区域信息来确定要使用的适当格式化约定。 例如,如果应用程序指定表示非特定英语的区域性“en”,则对于日期或货币格式,没有唯一正确的设置。 日期可能是美国格式,也可能是英国格式。 货币可能是新西兰格式,也可能是加拿大格式。 如果应用程序尝试通过指定非特定区域性来设置 CurrentCulture 属性,将引发异常。
如果您只能访问非特定区域性,则应用程序可以使用 CreateSpecificCulture 方法,以 CurrentCulture 期望的格式创建一个 CultureInfo 对象。 此方法将非特定区域性映射到关联的默认特定区域性,然后创建一个表示该特定区域性的 CultureInfo 对象。 下面的代码示例使用 CreateSpecificCulture 方法将非特定区域性德语(“de”)映射到特定区域性德语(德国),即“de-DE”。 然后,它为“de-DE”创建了一个 CultureInfo 对象,并使用该对象来初始化 CurrentCulture 属性的值。
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de")
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de");
注意 |
---|
此方法是可选的。如果它所提供的映射不适合您的应用程序,则应用程序可以使用自己的映射。 |
在 .aspx 页中显式设置 CurrentCulture 属性
CreateSpecificCulture 方法还允许应用程序使用 Web 浏览器的当前语言来初始化 .aspx 页面中的 CurrentCulture 属性。 在下面的代码示例中,UserLanguages 属性以字符串形式检索 Web 浏览器的当前语言。 CreateSpecificCulture 方法分析此字符串,并以可用于初始化 CurrentCulture 属性值的格式返回一个 CultureInfo 对象。
' Sets the CurrentCulture property to the culture associated with the Web
' browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0])
// Sets the CurrentCulture property to the culture associated with the Web
// browser's current language setting.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
有关使用和检索 ASP.NET 应用程序中的资源的更多信息,请参见 Resources in ASP.NET Applications。
隐式设置 CurrentCulture 属性
在 Windows 操作系统中,GetUserDefaultLCID 函数用于设置 CurrentCulture 属性。 用户可以通过在“控制面板”的“区域和语言选项”中更改用户区域性,或者通过更改与用户区域设置相关的设置(如货币、数字、日期和时间格式),更改此属性。
如果要确保应用程序使用 .NET Framework 为指定区域性提供的默认货币、数字、日期和时间格式,请让应用程序重写用户区域设置的默认值。 应用程序应使用接受 useUserOverride 参数的构造函数重载来创建 CultureInfo 对象,并将此参数设置为 false。 使用此技术会导致用户操作系统上的默认设置被 .NET Framework 的默认设置重写。 为使用欧元进行交易的欧盟 (EU) 成员格式化货币时,建议应用程序将 useUserOverride 参数设置为 false,以确保使用正确的货币符号。 有关更多信息,请参见 针对特定区域性格式化数值型数据 主题中的“设置欧元格式”子主题。