#region 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的
        //属性数据定义
        private static readonly Dictionary<int, string> CodeCollections = new Dictionary<int, string> {
            {-20319,"a"},{-20317,"ai"},{-20304,"an"},{-20295,"ang"},{-20292,"ao"},{-20283,"ba"},{-20265,"bai"},
            {-20257,"ban"},{-20242,"bang"},{-20230,"bao"},{-20051,"bei"},{-20036,"ben"},{-20032,"beng"},{-20026,"bi"},
            {-20002,"bian"},{-19990,"biao"},{-19986,"bie"},{-19982,"bin"},{-19976,"bing"},{-19805,"bo"},{-19784,"bu"},
            {-19775,"ca"},{-19774,"cai"},{-19763,"can"},{-19756,"cang"},{-19751,"cao"},{-19746,"ce"}, {-19741,"ceng"},
            {-19739,"cha"},{-19728,"chai"},{-19725,"chan"},{-19715,"chang"},{-19540,"chao"},{-19531,"che"},
            {-19525,"chen"},{-19515,"cheng"},{-19500,"chi"},{-19484,"chong"},{-19479,"chou"},{-19467,"chu"},
            {-19289,"chuai"},{-19288,"chuan"},{-19281,"chuang"},{-19275,"chui"},{-19270,"chun"}, {-19263,"chuo"},
            {-19261,"ci"},{-19249,"cong"},{-19243,"cou"},{-19242,"cu"},{-19238,"cuan"},{-19235,"cui"},{-19227,"cun"},
            {-19224,"cuo"},{-19218,"da"},{-19212,"dai"},{-19038,"dan"},{-19023,"dang"}, {-19018,"dao"},{-19006,"de"},
            {-19003,"deng"},{-18996,"di"},{-18977,"dian"},{-18961,"diao"},{-18952,"die"},{-18783,"ding"},{-18774,"diu"},
            {-18773,"dong"},{-18763,"dou"},{-18756,"du"},{-18741,"duan"},{-18735,"dui"},{-18731,"dun"},{-18722,"duo"},
            {-18710,"e"},{-18697,"en"},{-18696,"er"},{-18526,"fa"}, {-18518,"fan"},{-18501,"fang"},{-18490,"fei"},
            {-18478,"fen"},{-18463,"feng"},{-18448,"fo"},{-18447,"fou"},{-18446,"fu"},{-18239,"ga"},{-18237,"gai"},
            {-18231,"gan"},{-18220,"gang"},{-18211,"gao"},{-18201,"ge"}, {-18184,"gei"},{-18183,"gen"},{-18181,"geng"},
            {-18012,"gong"},{-17997,"gou"},{-17988,"gu"},{-17970,"gua"},{-17964,"guai"},{-17961,"guan"},{-17950,"guang"},
            {-17947,"gui"},{-17931,"gun"},{-17928,"guo"},{-17922,"ha"},{-17759,"hai"},{-17752,"han"},{-17733,"hang"},
            {-17730,"hao"},{-17721,"he"},{-17703,"hei"}, {-17701,"hen"},{-17697,"heng"},{-17692,"hong"},{-17683,"hou"},
            {-17676,"hu"},{-17496,"hua"},{-17487,"huai"},{-17482,"huan"},{-17468,"huang"},{-17454,"hui"},{-17433,"hun"},
            {-17427,"huo"},{-17417,"ji"},{-17202,"jia"},{-17185,"jian"},{-16983,"jiang"},{-16970,"jiao"},{-16942,"jie"},
            {-16915,"jin"},{-16733,"jing"},{-16708,"jiong"},{-16706,"jiu"},{-16689,"ju"},{-16664,"juan"},{-16657,"jue"},
            {-16647,"jun"},{-16474,"ka"},{-16470,"kai"},{-16465,"kan"},{-16459,"kang"},{-16452,"kao"}, {-16448,"ke"},
            {-16433,"ken"},{-16429,"keng"},{-16427,"kong"},{-16423,"kou"},{-16419,"ku"},{-16412,"kua"},{-16407,"kuai"},
            {-16403,"kuan"},{-16401,"kuang"},{-16393,"kui"},{-16220,"kun"},{-16216,"kuo"},{-16212,"la"},{-16205,"lai"},
            {-16202,"lan"},{-16187,"lang"},{-16180,"lao"},{-16171,"le"},{-16169,"lei"},{-16158,"leng"},{-16155,"li"},
            {-15959,"lia"},{-15958,"lian"},{-15944,"liang"},{-15933,"liao"},{-15920,"lie"},{-15915,"lin"},{-15903,"ling"},
            {-15889,"liu"},{-15878,"long"},{-15707,"lou"},{-15701,"lu"}, {-15681,"lv"},{-15667,"luan"},{-15661,"lue"},
            {-15659,"lun"},{-15652,"luo"},{-15640,"ma"},{-15631,"mai"}, {-15625,"man"},{-15454,"mang"},{-15448,"mao"},
            {-15436,"me"},{-15435,"mei"},{-15419,"men"},{-15416,"meng"},{-15408,"mi"},{-15394,"mian"},{-15385,"miao"},
            {-15377,"mie"},{-15375,"min"},{-15369,"ming"},{-15363,"miu"},{-15362,"mo"},{-15183,"mou"},{-15180,"mu"},
            {-15165,"na"},{-15158,"nai"},{-15153,"nan"},{-15150,"nang"},{-15149,"nao"},{-15144,"ne"},{-15143,"nei"},
            {-15141,"nen"},{-15140,"neng"},{-15139,"ni"},{-15128,"nian"},{-15121,"niang"},{-15119,"niao"},{-15117,"nie"},
            {-15110,"nin"},{-15109,"ning"},{-14941,"niu"},{-14937,"nong"},{-14933,"nu"},{-14930,"nv"},{-14929,"nuan"},
            {-14928,"nue"},{-14926,"nuo"},{-14922,"o"},{-14921,"ou"},{-14914,"pa"},{-14908,"pai"},{-14902,"pan"},
            {-14894,"pang"},{-14889,"pao"},{-14882,"pei"},{-14873,"pen"},{-14871,"peng"},{-14857,"pi"},{-14678,"pian"},
            {-14674,"piao"},{-14670,"pie"},{-14668,"pin"},{-14663,"ping"},{-14654,"po"},{-14645,"pu"},{-14630,"qi"},
            {-14594,"qia"},{-14429,"qian"},{-14407,"qiang"},{-14399,"qiao"},{-14384,"qie"},{-14379,"qin"}, {-14368,"qing"},
            {-14355,"qiong"},{-14353,"qiu"},{-14345,"qu"},{-14170,"quan"},{-14159,"que"},{-14151,"qun"},{-14149,"ran"},
            {-14145,"rang"},{-14140,"rao"},{-14137,"re"},{-14135,"ren"},{-14125,"reng"},{-14123,"ri"},{-14122,"rong"},
            {-14112,"rou"},{-14109,"ru"},{-14099,"ruan"},{-14097,"rui"},{-14094,"run"},{-14092,"ruo"},{-14090,"sa"},
            {-14087,"sai"},{-14083,"san"},{-13917,"sang"},{-13914,"sao"},{-13910,"se"},{-13907,"sen"},{-13906,"seng"},
            {-13905,"sha"},{-13896,"shai"},{-13894,"shan"},{-13878,"shang"},{-13870,"shao"},{-13859,"she"},{-13847,"shen"},
            {-13831,"sheng"},{-13658,"shi"},{-13611,"shou"},{-13601,"shu"},{-13406,"shua"},{-13404,"shuai"},{-13400,"shuan"},
            {-13398,"shuang"},{-13395,"shui"}, {-13391,"shun"},{-13387,"shuo"},{-13383,"si"},{-13367,"song"},{-13359,"sou"},
            {-13356,"su"},{-13343,"suan"},{-13340,"sui"},{-13329,"sun"},{-13326,"suo"},{-13318,"ta"},{-13147,"tai"},
            {-13138,"tan"},{-13120,"tang"},{-13107,"tao"},{-13096,"te"},{-13095,"teng"},{-13091,"ti"},{-13076,"tian"},
            {-13068,"tiao"},{-13063,"tie"},{-13060,"ting"},{-12888,"tong"},{-12875,"tou"},{-12871,"tu"},{-12860,"tuan"},
            {-12858,"tui"},{-12852,"tun"},{-12849,"tuo"},{-12838,"wa"},{-12831,"wai"},{-12829,"wan"},{-12812,"wang"},
            {-12802,"wei"},{-12607,"wen"},{-12597,"weng"},{-12594,"wo"},{-12585,"wu"},{-12556,"xi"},{-12359,"xia"},
            {-12346,"xian"},{-12320,"xiang"},{-12300,"xiao"},{-12120,"xie"},{-12099,"xin"},{-12089,"xing"},{-12074,"xiong"},
            {-12067,"xiu"},{-12058,"xu"},{-12039,"xuan"},{-11867,"xue"},{-11861,"xun"},{-11847,"ya"},{-11831,"yan"},
            {-11798,"yang"},{-11781,"yao"},{-11604,"ye"},{-11589,"yi"}, {-11536,"yin"},{-11358,"ying"},{-11340,"yo"},
            {-11339,"yong"},{-11324,"you"},{-11303,"yu"},{-11097,"yuan"},{-11077,"yue"},{-11067,"yun"},{-11055,"za"},
            {-11052,"zai"},{-11045,"zan"}, {-11041,"zang"},{-11038,"zao"},{-11024,"ze"},{-11020,"zei"},{-11019,"zen"},
            {-11018,"zeng"},{-11014,"zha"},{-10838,"zhai"},{-10832,"zhan"},{-10815,"zhang"},{-10800,"zhao"},{-10790,"zhe"},
            {-10780,"zhen"},{-10764,"zheng"},{-10587,"zhi"},{-10544,"zhong"},{-10533,"zhou"},{-10519,"zhu"},{-10331,"zhua"},
            {-10329,"zhuai"},{-10328,"zhuan"},{-10322,"zhuang"},{-10315,"zhui"},{-10309,"zhun"},{-10307,"zhuo"},{-10296,"zi"},
            {-10281,"zong"},{-10274,"zou"},{-10270,"zu"},{-10262,"zuan"},{-10260,"zui"},{-10256,"zun"},{-10254,"zuo"}};


        /// <summary> 
        /// 汉字转拼音 
        /// </summary> 
        /// <param name="txt"> 需要转换的汉字 </param> 
        /// <returns> 返回汉字对应的拼音 </returns> 
        public static string ToPinYin(string txt)
        {
            txt = txt.Trim();
            byte[] arr = new byte[2];   //每个汉字为2字节 
            StringBuilder result = new StringBuilder();  //使用StringBuilder优化字符串连接
            int charCode = 0;
            int arr1 = 0;
            int arr2 = 0;
            char[] arrChar = txt.ToCharArray();
            for (int j = 0; j < arrChar.Length; j++)   //遍历输入的字符 
            {
                arr = System.Text.Encoding.Default.GetBytes(arrChar[j].ToString());  //根据系统默认编码得到字节码 
                if (arr.Length == 1  )//如果只有1字节说明该字符不是汉字,结束本次循环 
                {
                    result.Append(arrChar[j].ToString());
                    continue;
                }
                arr1 = (short)(arr[0]);   //取字节1 
                arr2 = (short)(arr[1]);   //取字节2 
                charCode = arr1 * 256 + arr2 - 65536;//计算汉字的编码 

                if (charCode > -10254 || charCode < -20319)  //如果不在汉字编码范围内则不改变 
                {
                    result.Append(arrChar[j]);
                }
                else
                {
                    //根据汉字编码范围查找对应的拼音并保存到结果中 
                    //由于charCode的键不一定存在,所以要找比他更小的键上一个键
                    if (!CodeCollections.ContainsKey(charCode))
                    {
                        for (int i = charCode; i <= 0; --i)
                        {
                            if (CodeCollections.ContainsKey(i))
                            {
                                result.Append(CodeCollections[i] + " ");
                                break;
                            }
                        }
                    }
                    else
                    {
                        result.Append(CodeCollections[charCode] + " ");
                    }
                }
            }
            return result.ToString();
        }
        #endregion

 

posted on 2016-05-17 23:24  幻影K  阅读(460)  评论(0编辑  收藏  举报