簡體繁體轉換

rusli
Site Admin
文章: 212
註冊時間: 週三 7月 07, 2010 9:49 pm

簡體繁體轉換

文章rusli » 週五 11月 02, 2018 9:13 am

Translate.7z
(7.61 MiB) 已下載 18 次


代碼: 選擇全部


  public static class ChineseConverter
    {
        internal const int LOCALE_SYSTEM_DEFAULT = 0x0800;
        internal const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;
        internal const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;

        /// <summary>
        /// 使用OS的kernel.dll做為簡繁轉換工具,只要有裝OS就可以使用,不用額外引用dll,但只能做逐字轉換,無法進行詞意的轉換
        /// <para>所以無法將電腦轉成計算機</para>
        /// </summary>
        [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest);

        /// <summary>
        /// 繁體轉簡體
        /// </summary>
        /// <param name="pSource">要轉換的繁體字:體</param>
        /// <returns>轉換後的簡體字:體</returns>
        public static string ToSimplified(string pSource)
        {
            String tTarget = new String(' ', pSource.Length);
            int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_SIMPLIFIED_CHINESE, pSource, pSource.Length, tTarget, pSource.Length);
            return tTarget;
        }

        /// <summary>
        /// 簡體轉繁體
        /// </summary>
        /// <param name="pSource">要轉換的繁體字:體</param>
        /// <returns>轉換後的簡體字:體</returns>
        public static string ToTraditional(string pSource)
        {
            String tTarget = new String(' ', pSource.Length);
            int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length);
            return tTarget;
        }

        ///
        /// 使用 Office Word (Microsoft.Office.Interop.Word) 進行轉換
        ///
        public static string ConvertUsingWord(string argSource, bool argIsCht)
        {
            var doc = new Microsoft.Office.Interop.Word.Document();
            doc.Content.Text = argSource;
            doc.Content.TCSCConverter(
                argIsCht
                    ? WdTCSCConverterDirection.wdTCSCConverterDirectionTCSC
                    : WdTCSCConverterDirection.wdTCSCConverterDirectionSCTC, true, true);
            var ret = doc.Content.Text;
            object saveChanges = false;
            object originalFormat = Missing.Value;
            object routeDocument = Missing.Value;
            doc.Close(ref saveChanges, ref originalFormat, ref routeDocument);
            return ret;
        }
    }
   

回到「C#」

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客