ChineseLunisolarCalendar 无法进行简繁转换,仅支持农历计算;Windows 下推荐使用 Microsoft.VisualBasic.Strings.StrConv,跨平台则用 OpenCCSharp。

用 ChineseLunisolarCalendar 不能转繁体,别试了
系统自带的 ChineseLunisolarCalendar 只管农历计算,和简繁转换完全无关。很多人搜到这个类名就以为能用,结果调半天 GetYear GetMonth,发现连“汉”字都变不出“漢”。这不是 API 设计问题,是根本没这功能。
真正能用的只有两个方向:Windows 平台走系统 API,跨平台走第三方库。
Microsoft.VisualBasic.Strings.StrConv 是 Windows 下最省事的方案
它封装了系统底层的 LCMapString,支持简繁互转,不用额外装包,VS 里默认就有(引用 Microsoft.VisualBasic 程序集即可)。
- 转繁体:用
StrConv("汉字", VbStrConv.TraditionalChinese, 0) - 转简体:用
StrConv("漢字", VbStrConv.SimplifiedChinese, 0) - 注意第 3 个参数是
LCID,传0表示用当前系统 locale;如果明确要按大陆/台湾规则转,得填2052(简体)或1028(繁体),否则遇到“后面”这种词可能转成“後面”或“後面”不一致 - 它只处理 Unicode 字符,对 ASCII 字符(如英文字母、数字)原样返回,不会误伤
跨平台必须用 Unidecode.NET 或 OpenCCSharp
Unidecode.NET 本质是拼音化+简单映射,对“发”→“發/髮”这种多音多义场景基本不管,适合做 URL 友好 slug,不适合正式简繁转换。
真正靠谱的是 OpenCCSharp(.NET 封装版 OpenCC):
- 支持
s2t(简→繁)、t2s(繁→简)、s2tw(简→台湾繁体)等 7 种配置,细粒度可控 - 需要提前下载
opencc.dll(Windows)或libopencc.so(Linux),NuGet 包OpenCCSharp不含二进制,得自己配runtime目录 - 首次调用
OpenCC.Create会加载词典,耗时约 50–200ms,别在高频循环里反复创建实例
别信“UTF-8 编码转换”这类说法
简体和繁体汉字在 Unicode 里是不同码位(比如“为”U+4E3A,“為”U+70BA),不存在“同一字符换编码就变繁体”的事。所有声称靠改 Encoding.UTF8 或 Encoding.GetEncoding("GB2312") 实现简繁转换的,都是混淆概念——那只是解码错误导致的乱码巧合。
真正转换必须走字符映射表或语义规则,不是编码层的事。这点搞错,后面所有调试都是徒劳。
简繁转换不是纯技术活,涉及地域习惯和语义歧义,比如“头发”和“发展”里的“发”字,自动转换库也常出错。上线前一定得拿真实业务文本过一遍,别只测“你好世界”。


















