# 使用 C# 繁體轉簡體 ###### tags: `C#` ## 前言 早期在寫單機的時候發現有這樣的功能,這邊把之前舊的使用方式和現在Core上使用的方式記錄一下。 # 說明 不會很難直接看實作吧 ## 目錄 [TOC] # 實作 ## 舊方法(kernel32.dll) 網路上還可以找到幾種轉換方式,這邊的話是使用OS內建元件**kernel32.dll**的方式直接進行,代碼如下: ```csharp= { private const int LocaleSystemDefault = 0x0800; private const int LcmapSimplifiedChinese = 0x02000000; private const int LcmapTraditionalChinese = 0x04000000; [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] private static extern int LCMapString(int locale, int dwMapFlags, string lpSrcStr, int cchSrc, string lpDestStr, int cchDest); /// <summary> /// 繁體轉簡體 /// </summary> public static string ToSimplified(string argSource) { var t = new String(' ', argSource.Length); LCMapString(LocaleSystemDefault, LcmapSimplifiedChinese, argSource, argSource.Length, t, argSource.Length); return t; } /// <summary> /// 簡體轉繁體 /// </summary> public static string ToTraditional(string argSource) { var t = new String(' ', argSource.Length); LCMapString(LocaleSystemDefault, LcmapTraditionalChinese, argSource, argSource.Length, t, argSource.Length); return t; } } ``` 執行結果如下: ![](https://i.imgur.com/HswnHf9.png) ## 使用套件 在現在可以使用套件[CHTCHSConv](https://www.nuget.org/packages/CHTCHSConv/#readme-body-tab)來進行,除了方便許多相容性也比較好。 套件下載完後使用方法如下,如果需要簡體轉繁體只需要調整`ChineseConversionDirection`參數即可 ```csharp= ChineseConverter.Convert("這是一段文字", ChineseConversionDirection.TraditionalToSimplified); ``` 執行結果如下 ![](https://i.imgur.com/xieOyTl.png) # 結論 這邊單純紀錄一下功能使用上的差異,整體來說不會太難。 <br/> --- 相關參考來源: [C# 繁簡轉換效能大車拚](http://jian-zhoung.blogspot.com/2012/07/c.html) <style> .red{color: red;} </style>