Using system;
Using system. Data;
Using system. configuration;
Using system. text;
/// <Summary>
/// Summary description for converthztopz_gb2312
/// </Summary>
Public class converthztopy
{
Public converthztopy ()
{
//
// Todo: Add constructor logic here
//
}
Private Static int [] pyvalue = new int [] {-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257, -20230,-20051,-20036,-20032,-20026,
-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,-19756,-19751,-19746, -19741,-19739,-19728,
-19725,-19715,-19540,-19531,-19525,-19515,-19500,-19484,-19479,-19467,-19289,-19288,-19281, -19275,-19270,-19263,
-19261,-19249,-19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018, -19006,-19003,-18996,
-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735,-18731,-18722,-18710, -18697,-18696,-18526,
-18518,-18501,-18490,-18478,-18463,-18448,-18447,-18446,-18239,-18237,-18231,-18220,-18211, -18201,-18184,-18183,
-18181,-18012,-17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759, -17752,-17733,-17730,
-17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482,-17468,-17454,-17433, -17427,-17417,-17202,
-17185,-16983,-16970,-16942,-16915,-16733,-16708,-16706,-16689,-16664,-16657,-16647,-16474, -16470,-16465,-16459,
-16452,-16448,-16433,-16429,-16427,-16423,-16419,-16412,-16407,-16403,-16401,-16393,-16220, -16216,-16212,-16205,
-16202,-16187,-16180,-16171,-16169,-16158,-16155,-15959,-15958,-15944,-15933,-15920,-15915, -15903,-15889,-15878,
-15707,-15701,-15681,-15667,-15661,-15659,-15652,-15640,-15631,-15625,-15454,-15448,-15436, -15435,-15419,-15416,
-15408,-15394,-15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153, -15150,-15149,-15144,
-15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109,-14941,-14937,-14933, -14930,-14929,-14928,
-14926,-14922,-14921,-14914,-14908,-14902,-14894,-14889,-14882,-14873,-14871,-14857,-14678, -14674,-14670,-14668,
-14663,-14654,-14645,-14630,-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353, -14345,-14170,-14159,
-14151,-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112,-14109,-14099,-14097, -14094,-14092,-14090,
-14087,-14083,-13917,-13914,-13910,-13907,-13906,-13905,-13896,-13894,-13878,-13870,-13859, -13847,-13831,-13658,
-13611,-13601,-13406,-13404,-13400,-13398,-13395,-13391,-13387,-13383,-13367,-13359,-13356, -13343,-13340,-13329,
-13326,-13318,-13147,-13138,-13120,-13107,-13096,-13095,-13091,-13076,-13068,-13063,-13060, -12888,-12875,-12871,
-12860,-12858,-12852,-12849,-12838,-12831,-12829,-12812,-12802,-12607,-12597,-12594,-12585, -12556,-12359,-12346,
-12320,-12300,-12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,-11831, -11798,-11781,-11604,
-11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,-11067,-11055,-11052,-11045, -11041,-11038,-11024,
-11020,-11019,-11018,-11014,-10838,-10832,-10815,-10800,-10790,-10780,-10764,-10587,-10544, -10533,-10519,-10331,
-10329,-10328,-10322,-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256, -10254 };
Private Static string [] pystr = new string [] {"A", "AI", "an", "Ang", "Ao", "ba", "bai ", "ban", "bang", "Bao", "Bei", "Ben", "Beng", "bi", "Bian", "Biao ",
"Bie", "bin", "bing", "Bo", "bu", "ca", "Cai", "can", "Cang", "Cao ", "CE", "Ceng", "cha", "chai", "Chan", "Chang", "Chao", "Che", "Chen ",
"Cheng", "Chi", "Chong", "Chou", "chu", "Chuai", "Chuan", "Chuang", "Chui", "Chun ", "Chuo", "Ci", "Cong", "cou", "Cu", "Cuan", "Cui ",
"Cun", "CuO", "da", "Dai", "Dan", "Dang", "Dao", "de", "Deng", "Di ", "Dian", "Diao", "die", "ding", "Diu", "Dong", "dou", "Du", "Duan ",
"DUI", "Dun", "duo", "E", "en", "er", "Fa", "fan", "fang", "fei ", "Fen", "Feng", "FO", "fou", "Fu", "Ga", "Gai", "Gan", "Gang", "Gao ",
"Ge", "gei", "gen", "Geng", "Gong", "gou", "Gu", "Gua", "Guai", "Guan ", "Guang", "Gui", "gun", "Guo", "ha", "Hai", "Han", "hang ",
"Hao", "he", "Hei", "Hu", "Heng", "Hong", "Hou", "Hu", "Hua", "Huai ", "Huan", "Huang", "Hui", "hun", "Huo", "Ji", "Jia", "jian ",
"Jiang", "Jiao", "Jie", "Jin", "jing", "jiong", "Jiu", "Ju", "Juan", "Jue ", "Jun", "ka", "Kai", "kan", "Kang", "kao", "Ke", "Ken ",
"Keng", "Kong", "Kou", "ku", "Kua", "Kuai", "Kuan", "Kuang", "Kui", "Kun ", "Kuo", "La", "Lai", "Lan", "Lang", "Lao", "Le", "lei ",
"Leng", "Li", "Lia", "Lian", "Liang", "liao", "lie", "Lin", "Ling", "Liu ", "long", "Lou", "Lu", "LV", "Luan", "Lue", "Lun", "Luo ",
"Ma", "Mai", "man", "mang", "Mao", "me", "Mei", "men", "Meng", "mi ", "Mian", "Miao", "Mie", "min", "Ming", "Miu", "Mo", "MOU", "Mu ",
"Na", "Nai", "Nan", "Nang", "Nao", "ne", "Nei", "Nen", "Neng", "Ni ", "Nian", "Niang", "niao", "Nie", "Nin", "Ning", "niu", "Nong ",
"Nu", "NV", "Nuan", "nue", "nuo", "O", "ou", "Pa", "Pai", "pan ", "Pang", "pao", "Pei", "pen", "peng", "Pi", "pian", "Piao", "pie ",
"Pin", "ping", "po", "Pu", "Qi", "QIA", "Qian", "Qiang", "Qiao", "Qie ", "Qin", "Qing", "Qiong", "Qiu", "Qu", "Quan", "que", "Qun ",
"Ran", "rang", "Rao", "re", "Ren", "reng", "Ri", "rong", "Rou", "Ru ", "Ruan", "Rui", "run", "RuO", "sa", "sai", "San", "sang ",
"Sao", "se", "Sen", "Seng", "Sha", "Shai", "Shan", "Shang", "shao", "she ", "shen", "Sheng", "Shi", "Shou", "Shu", "Shua ",
"Shuai", "Shuan", "Shuang", "Shui", "Shun", "Shuo", "Si", "Song", "Sou", "Su ", "Suan", "Sui", "Sun", "Suo", "ta", "Tai ",
"Tan", "Tang", "Tao", "te", "Teng", "ti", "Tian", "tiao", "Tie", "ting ", "tong", "TOU", "tu", "tuan", "Tui", "tun", "Tuo ",
"Wa", "Wai", "Wan", "Wang", "wei", "Wen", "Weng", "wo", "Wu", "Xi ", "xia", "Xian", "Xiang", "Xiao", "xie", "Xin", "Xing ",
"Xiong", "Xiu", "Xu", "Xuan", "Xue", "Xun", "ya", "Yan", "Yang", "Yao ", "Ye", "Yi", "Yin", "ying", "yo", "Yong", "you ",
"Yu", "Yuan", "Yue", "Yun", "za", "Zai", "Zan", "Zang", "Zao", "ze ", "Zei", "Zen", "Zeng", "Zha", "Zhai", "Zhan", "Zhang ",
"Zhao", "zhe", "Zhen", "Zheng", "Zhi", "Zhong", "Zhou", "zhu", "zhua", "zhuai ", "Zhuan", "Zhuang", "Zhui", "Zhun", "Zhuo ",
"Zi", "Zong", "zou", "Zu", "Zuan", "Zui", "Zun", "Zuo "};
/// <Summary>
/// Obtain pinyin
/// </Summary>
/// <Param name = "str"> Chinese characters </param>
/// <Returns> </returns>
Public static string convert (string Str)
{
Byte [] array = new byte [2];
String returnstr = "";
Int chrasc = 0;
Int I1 = 0;
Int I2 = 0;
Char [] nowchar = Str. tochararray ();
For (Int J = 0; j <nowchar. length; j ++)
{
Byte [] btchk = system. Text. encoding. Default. getbytes (nowchar [J]. tostring ());
If (btchk. Length = 1)
{
Returnstr + = nowchar [J]. tostring ();
Continue;
}
Array = btchk;
// Array = system. Text. encoding. Default. getbytes (nowchar [J]. tostring ());
I1 = (short) (array [0]);
I2 = (short) (array [1]);
Chrasc = I1 * 256 + I2-65536;
If (chrasc> 0 & chrasc <160)
{
Returnstr + = nowchar [J];
}
Else
{
For (INT I = (pyvalue. Length-1); I> = 0; I --)
{
If (pyvalue [I] <= chrasc)
{
Returnstr + = pystr [I];
Break;
}
}
}
}
Return returnstr;
}
/// <Summary>
/// Obtain the first letter of the pinyin alphabet
/// </Summary>
/// <Param name = "str"> Chinese characters </param>
/// <Returns> </returns>
Public static string get1_py (string Str)
{
String tempstr = "";
Foreach (char C in Str)
{
If (INT) C >=33 & (INT) C <= 126)
{
Tempstr + = C. tostring (); // The original letters and symbols are retained.
}
Else
{
If (INT) C! = 32) // if it is not a space, convert
{
Tempstr + = getpychar (C. tostring (); // accumulate the pinyin initials
}
Else // if it is a space character, then it is added with an empty character in the middle of the string
{
Tempstr + = "";
}
}
}
Return tempstr;
}
Private Static string getpychar (string C)
{
Byte [] array = new byte [2];
Array = system. Text. encoding. Default. getbytes (C );
Int I = (short) (array [0]-'\ 0') * 256 + (short) (array [1]-' \ 0 '));
If (I <0xb0a1) Return "";
If (I <0xb0c5) Return "";
If (I <0xb2c1) Return "B ";
If (I <0xb4ee) Return "C ";
If (I <0xb6ea) Return "D ";
If (I <0xb7a2) Return "E ";
If (I <0xb8c1) Return "F ";
If (I <0xb9fe) Return "G ";
If (I <0xbbf7) Return "H ";
If (I <0xbfa6) Return "J ";
If (I <0xc0ac) Return "K ";
If (I <0xc2e8) Return "L ";
If (I <0xc4c3) Return "M ";
If (I <0xc5b6) Return "N ";
If (I <0xc5be) Return "O ";
If (I <0xc6da) Return "p ";
If (I <0xc8bb) Return "Q ";
If (I <0xc8f6) Return "R ";
If (I <0 xcbfa) Return "S ";
If (I <0 xcdda) Return "T ";
If (I <0xcef4) Return "W ";
If (I <0xd1b9) Return "X ";
If (I <0xd4d1) Return "Y ";
If (I <0xd7fa) Return "Z ";
Return "";
}
}