You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用CultureInfo设置zh-CHT繁体中文文化不生效始终为默认值

问题原因

配置不生效的核心原因是使用了已弃用的非标准文化名称zh-CHT:

  • zh-CHT是.NET 1.1时代遗留的繁体中文非特定区域性别名,从.NET Framework 4.0开始,以及所有.NET Core、.NET 5+版本中,该名称已不属于IETF标准认可的合法文化标识,实例化时会触发文化回退逻辑,直接返回系统默认文化。
  • 即使是在兼容旧别名的低版本.NET环境中,zh-CHT也没有绑定对应地区的日期、货币、排序规则,无法完整加载繁体中文的本地化配置。
正确配置步骤
  • 替换为标准合法的繁体中文文化标识,根据实际业务场景选择对应名称:
    • zh-Hant:不绑定特定地区的中性繁体中文文化,仅加载繁体中文语言资源,不关联地区格式规则
    • zh-TW:中国台湾地区繁体中文,是通用度最高的繁体中文特定区域性,包含台湾地区的日期格式、新台币货币、繁体中文用词规则
    • zh-HK:中国香港特别行政区繁体中文,适配香港地区的日期格式、港币货币、粤语常用表达习惯
    • zh-MO:中国澳门特别行政区繁体中文,适配澳门地区本地化规则
  • 实例化文化对象后必须赋值给对应线程的文化属性,仅创建CultureInfo实例不会自动全局生效,参考代码如下:
// 以通用的zh-TW为例,按需替换为其他繁体中文标识即可
CultureInfo culture = new CultureInfo("zh-TW");
// 设置当前线程的UI文化,用于加载多语言资源文件
Thread.CurrentThread.CurrentUICulture = culture;
// 设置当前线程的应用文化,用于处理数字、日期、货币、字符串排序等格式逻辑
Thread.CurrentThread.CurrentCulture = culture;

// .NET 5+ 可通过全局配置设置所有后续新建线程的默认文化,无需逐线程赋值
// CultureInfo.DefaultThreadCurrentCulture = culture;
// CultureInfo.DefaultThreadCurrentUICulture = culture;
  • 特殊场景排查:如果是ASP.NET Core等Web项目,需要检查本地化中间件的配置,默认的请求文化提供器会根据请求头、Cookie、路由参数覆盖手动设置的线程文化,需要将目标繁体中文文化加入中间件的支持文化列表。

内容的提问来源于stack exchange,提问作者Chandrapal Chetan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.21 16:16:02