http://blog.xuite.net/chu.hsing/Think/28197893

 

 

在Web的環境下,一個網站會同時被兩岸的使用者使用已經不是什麼了不起的大事,前陣子有遇到有人是透過override Render這個function來達到整個頁面文字的簡繁互換,但那個作法最後評估後覺得太耗費效能,加上我們的產品本身就已經有作UI的多國語言,因此也不需要做到那麼複雜,但有一天使用者提了一個需求,希望輸入簡體字可以查到繁體的資料,聽起來挺合理的,隔沒兩天,我們也真的把他給完成了,哈哈,在網路上雖然查到幾種解決方案,但最後我們決定採用OS本身提供的dll元件來進行簡繁互換,改class的source如下:

using System.Runtime.InteropServices;

01     /// <summary> 
02     /// 做為字碼轉換工具 
03     /// </summary> 

04     public class CharSetConverter 
05     
06         internal const int LOCALE_SYSTEM_DEFAULT = 0x0800; 
07         internal const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000; 
08         internal const int LCMAP_TRADITIONAL_CHINESE = 0x04000000; 
09  
10         /// <summary> 
11         /// 使用OS的kernel.dll做為簡繁轉換工具,只要有裝OS就可以使用,不用額外引用dll,但只能做逐字轉換,無法進行詞意的轉換 
12         /// <para>所以無法將電腦轉成計算機</para> 
13         /// </summary> 
14         [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] 
15         internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest); 
16  
17         /// <summary> 
18         /// 繁體轉簡體 
19         /// </summary> 
20         /// <param name="pSource">要轉換的繁體字:體</param> 
21         /// <returns>轉換後的簡體字:体</returns> 

22         public static string ToSimplified(string pSource) 
23         
24             String tTarget = new String(' ', pSource.Length); 
25             int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_SIMPLIFIED_CHINESE, pSource, pSource.Length, tTarget, pSource.Length); 
26             return tTarget; 
27         }
 
28  
29         /// <summary> 
30         /// 簡體轉繁體 
31         /// </summary> 
32         /// <param name="pSource">要轉換的繁體字:体</param> 
33         /// <returns>轉換後的簡體字:體</returns> 

34         public static string ToTraditional(string pSource) 
35         
36             String tTarget = new String(' ', pSource.Length); 
37             int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length); 
38             return tTarget; 
39         }
 
40     }

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 meltdown 的頭像
    meltdown

    meltdown

    meltdown 發表在 痞客邦 留言(0) 人氣()