汉字转拼音.cpp 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860
  1. #include "stdafx.h"
  2. #include <string>
  3. using namespace std;
  4. // 来源:
  5. // http://www.360doc.com/content/14/0915/14/16685697_409649131.shtml
  6. // http://www.360doc.com/content/11/1229/10/8443103_175757657.shtml
  7. void GetFirstLetter(IN LPCTSTR lpString, OUT CHAR* lpResult)
  8. {
  9. static int li_SecPosValue[] =
  10. {
  11. 1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212,
  12. 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249
  13. };
  14. static char* lc_FirstLetter[] =
  15. {
  16. "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O",
  17. "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"
  18. };
  19. static char* ls_SecondSecTable =
  20. "CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHY"
  21. "LYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWY"
  22. "WSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMY"
  23. "DJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZP"
  24. "MGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJB"
  25. "PMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTX"
  26. "YXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGS"
  27. "QQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJ"
  28. "YYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZK"
  29. "HHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQ"
  30. "FHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ";
  31. #ifdef UNICODE
  32. // 将unicode编码转换为ansi编码;
  33. int nSecondSecTable = strlen(ls_SecondSecTable);
  34. int nStrlen = wcslen(lpString);
  35. char *buffer = NULL;
  36. buffer = new char[nStrlen * sizeof(WCHAR) + 1];
  37. ZeroMemory(buffer, nStrlen * sizeof(WCHAR) + 1);
  38. WideCharToMultiByte(CP_ACP, NULL, lpString, nStrlen, buffer, nStrlen * sizeof(WCHAR) + 1, NULL, NULL);
  39. #else
  40. int nStrlen = strlen(lpString);
  41. char *buffer = (char*)lpString;
  42. #endif
  43. UINT i = 0;
  44. UINT j = 0;
  45. UINT nlen = nStrlen * sizeof(TCHAR);
  46. int nHigh = 0, nLow = 0, nCode = 0;
  47. string szResult;
  48. for (i = 0; i < nlen; i++)
  49. {
  50. // 找到汉字的机内码;
  51. nHigh = (UCHAR) (buffer[i + 0]);
  52. nLow = (UCHAR) (buffer[i + 1]);
  53. // 非汉字保留;
  54. if (nHigh < 0xA1 || nLow < 0xA1)
  55. {
  56. szResult += buffer[i];
  57. continue;
  58. }
  59. else
  60. {
  61. // 一级汉字机内码与区位码的关系;
  62. // 机内码高字节 = 区码 + 0xA0;
  63. // 机内码低字节 = 位码 + 0xA0;
  64. // 区位码 = (机内码高字节 - 0xA0) * 100 + 机内码低字节 - 0xA0;
  65. nCode = (nHigh - 160) * 100 + nLow - 160;
  66. }
  67. // 一级汉字 16~55区;
  68. if (nCode > 1600 && nCode < 5590)
  69. {
  70. for (j = 22; j >= 0; j--)
  71. {
  72. if (nCode >= li_SecPosValue[j])
  73. {
  74. szResult += lc_FirstLetter[j];
  75. i++;
  76. break;
  77. }
  78. }
  79. continue;
  80. }
  81. else // 二级汉字通过查表, 56~87; 将二级汉字拼音的首字母放在ls_SecondSecTable表中;
  82. {
  83. i++;
  84. // 根据机内码转换成ls_SecondSecTable表的下标;
  85. nCode = (nHigh - 160 - 56) * 94 + nLow - 161;
  86. if (nCode >= 0 && nCode <= 3007)
  87. szResult += ls_SecondSecTable[nCode];
  88. else
  89. {
  90. szResult += (char) nHigh;
  91. szResult += (char) nLow;
  92. }
  93. }
  94. }
  95. sprintf_s(lpResult, szResult.length() + 1, "%s", szResult.c_str());
  96. }
  97. void GetFirstLetter(IN LPCTSTR lpString, OUT WCHAR* lpResult)
  98. {
  99. static int li_SecPosValue[] =
  100. {
  101. 1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212,
  102. 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249
  103. };
  104. static char* lc_FirstLetter[] =
  105. {
  106. "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O",
  107. "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"
  108. };
  109. static char* ls_SecondSecTable =
  110. "CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHY"
  111. "LYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWY"
  112. "WSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMY"
  113. "DJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZP"
  114. "MGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJB"
  115. "PMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTX"
  116. "YXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGS"
  117. "QQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJ"
  118. "YYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZK"
  119. "HHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQ"
  120. "FHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ";
  121. #ifdef UNICODE
  122. // 将unicode编码转换为ansi编码;
  123. int nSecondSecTable = strlen(ls_SecondSecTable);
  124. int nStrlen = wcslen(lpString);
  125. char *buffer = NULL;
  126. buffer = new char[nStrlen * sizeof(WCHAR) + 1];
  127. ZeroMemory(buffer, nStrlen * sizeof(WCHAR) + 1);
  128. WideCharToMultiByte(CP_ACP, NULL, lpString, nStrlen, buffer, nStrlen * sizeof(WCHAR) + 1, NULL, NULL);
  129. #else
  130. int nStrlen = strlen(lpString);
  131. char *buffer = (char*)lpString;
  132. #endif
  133. UINT i = 0;
  134. UINT j = 0;
  135. UINT nlen = nStrlen * sizeof(TCHAR);
  136. int nHigh = 0, nLow = 0, nCode = 0;
  137. string szResult;
  138. for (i = 0; i < nlen; i++)
  139. {
  140. // 找到汉字的机内码;
  141. nHigh = (UCHAR) (buffer[i + 0]);
  142. nLow = (UCHAR) (buffer[i + 1]);
  143. // 非汉字保留;
  144. if (nHigh < 0xA1 || nLow < 0xA1)
  145. {
  146. szResult += buffer[i];
  147. continue;
  148. }
  149. else
  150. {
  151. // 一级汉字机内码与区位码的关系;
  152. // 机内码高字节 = 区码 + 0xA0;
  153. // 机内码低字节 = 位码 + 0xA0;
  154. // 区位码 = (机内码高字节 - 0xA0) * 100 + 机内码低字节 - 0xA0;
  155. nCode = (nHigh - 160) * 100 + nLow - 160;
  156. }
  157. // 一级汉字 16~55区;
  158. if (nCode > 1600 && nCode < 5590)
  159. {
  160. for (j = 22; j >= 0; j--)
  161. {
  162. if (nCode >= li_SecPosValue[j])
  163. {
  164. szResult += lc_FirstLetter[j];
  165. i++;
  166. break;
  167. }
  168. }
  169. continue;
  170. }
  171. else // 二级汉字通过查表, 56~87; 将二级汉字拼音的首字母放在ls_SecondSecTable表中;
  172. {
  173. i++;
  174. // 根据机内码转换成ls_SecondSecTable表的下标;
  175. nCode = (nHigh - 160 - 56) * 94 + nLow - 161;
  176. if (nCode >= 0 && nCode <= 3007)
  177. szResult += ls_SecondSecTable[nCode];
  178. else
  179. {
  180. szResult += (char) nHigh;
  181. szResult += (char) nLow;
  182. }
  183. }
  184. }
  185. #ifdef UNICODE
  186. // 将ansi编码转换成unicode编码;
  187. WCHAR *pwcsTemp = new WCHAR[nStrlen + 1];
  188. ZeroMemory(pwcsTemp, (nStrlen + 1) * sizeof(WCHAR));
  189. MultiByteToWideChar(CP_ACP, NULL, szResult.c_str(), szResult.length() + 1, pwcsTemp, nStrlen);
  190. swprintf_s(lpResult, nStrlen + 1, _T("%s"), pwcsTemp);
  191. delete []pwcsTemp;
  192. pwcsTemp = NULL;
  193. delete []buffer;
  194. buffer = NULL;
  195. #endif
  196. }
  197. void GetFirstLetter(IN CString strSource, OUT CString &strResult)
  198. {
  199. static int li_SecPosValue[] =
  200. {
  201. 1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212,
  202. 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249
  203. };
  204. static char* lc_FirstLetter[] =
  205. {
  206. "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O",
  207. "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"
  208. };
  209. static char* ls_SecondSecTable =
  210. "CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGKLJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJZZKQHY"
  211. "LYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWY"
  212. "WSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMY"
  213. "DJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMHZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZP"
  214. "MGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHB[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJB"
  215. "PMLMSXLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTX"
  216. "YXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGS"
  217. "QQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJ"
  218. "YYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZK"
  219. "HHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQ"
  220. "FHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ";
  221. #ifdef UNICODE
  222. // 将unicode编码转换为ansi编码;
  223. int nSecondSecTable = strlen(ls_SecondSecTable);
  224. int nStrlen = strSource.GetLength();
  225. char *buffer = new char[nStrlen * sizeof(WCHAR) + 1];
  226. ZeroMemory(buffer, nStrlen * sizeof(WCHAR) + 1);
  227. WideCharToMultiByte(CP_ACP, NULL, strSource, nStrlen, buffer, nStrlen * sizeof(WCHAR) + 1, NULL, NULL);
  228. #else
  229. //int nStrlen = strlen(lpString);
  230. int nStrlen = strSource.GetLength();
  231. const char *buffer = strSource.GetString();
  232. #endif
  233. UINT i = 0;
  234. UINT j = 0;
  235. UINT nlen = nStrlen * sizeof(TCHAR);
  236. int nHigh = 0, nLow = 0, nCode = 0;
  237. string szResult;
  238. for (i = 0; i < nlen; i++)
  239. {
  240. // 找到汉字的机内码;
  241. nHigh = (UCHAR) (buffer[i + 0]);
  242. nLow = (UCHAR) (buffer[i + 1]);
  243. // 非汉字保留;
  244. if (nHigh < 0xA1 || nLow < 0xA1)
  245. {
  246. szResult += buffer[i];
  247. continue;
  248. }
  249. else
  250. {
  251. // 一级汉字机内码与区位码的关系;
  252. // 机内码高字节 = 区码 + 0xA0;
  253. // 机内码低字节 = 位码 + 0xA0;
  254. // 区位码 = (机内码高字节 - 0xA0) * 100 + 机内码低字节 - 0xA0;
  255. nCode = (nHigh - 160) * 100 + nLow - 160;
  256. }
  257. // 一级汉字 16~55区;
  258. if (nCode > 1600 && nCode < 5590)
  259. {
  260. for (j = 22; j >= 0; j--)
  261. {
  262. if (nCode >= li_SecPosValue[j])
  263. {
  264. szResult += lc_FirstLetter[j];
  265. i++;
  266. break;
  267. }
  268. }
  269. continue;
  270. }
  271. else // 二级汉字通过查表, 56~87; 将二级汉字拼音的首字母放在ls_SecondSecTable表中;
  272. {
  273. i++;
  274. // 根据机内码转换成ls_SecondSecTable表的下标;
  275. nCode = (nHigh - 160 - 56) * 94 + nLow - 161;
  276. if (nCode >= 0 && nCode <= 3007)
  277. szResult += ls_SecondSecTable[nCode];
  278. else
  279. {
  280. szResult += (char) nHigh;
  281. szResult += (char) nLow;
  282. }
  283. }
  284. }
  285. #ifdef UNICODE
  286. // 将ansi编码转换成unicode编码;
  287. WCHAR *pwcsTemp = new WCHAR[nStrlen + 1];
  288. ZeroMemory(pwcsTemp, (nStrlen + 1) * sizeof(WCHAR));
  289. MultiByteToWideChar(CP_ACP, NULL, szResult.c_str(), szResult.length() + 1, pwcsTemp, nStrlen);
  290. //swprintf_s(strResult, nStrlen + 1, _T("%s"), pwcsTemp);
  291. strResult.Format(_T("%s"),pwcsTemp);
  292. delete []pwcsTemp;
  293. pwcsTemp = NULL;
  294. delete []buffer;
  295. buffer = NULL;
  296. #else
  297. strResult.Format(_T("%s"),szResult.c_str());
  298. #endif
  299. }
  300. /*
  301. 附录1:汉字编码原则
  302. 1.国家标准汉字代码体系
  303. 汉字字数繁多,属性丰富,因而汉字代码体系也较复杂,包括:
  304. (1)汉字机内码。它们是汉字在计算机汉字系统内部的表示方法,是计算机汉字系统
  305. 的基础代码。
  306. (2)汉字交换码。它们是国标汉字(如机内码)进行信息交换的代码标准。
  307. (3)汉字输入码。它们是在计算机标准键盘上输入汉字用到的各种代码体系。
  308. (4)汉字点阵码。它们是在计算机屏幕上显示和在打印机上打印输出汉字的代码体系。
  309. (5)汉字字形控制码。为了打印各种风格的字体和字形所制定的代码。
  310. 这些代码系统有的必须有统一的国家标准,有的则不要求统一。近年来我国已经制定
  311. 系列汉字信息处理方面的国家标准,今后将继续完善,并与国际上求得统一。
  312. 2. 国家标准汉字交换码
  313. 我国制定了“中华人民共和国国家标准信息交换汉字编码”,标准代号为GB2312—80,
  314. 这种编码又称为国标码。在国标码的字符集中共收录了一级汉字3755个,二级汉字3008
  315. 个,图形符号682个,三项字符总计7445个。
  316. 在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,
  317. 方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01
  318. 位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯
  319. 数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位码
  320. 就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一
  321. 的区位码。汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区
  322. 位码为0331,则它在03区3l位。
  323. 所有的汉字和符号所在的区分为以下四个组:
  324. (1)01区到15区。图形符号区,其中01区到09区为标准符号区,10区到15区为
  325. 自定义符号区。
  326. 01区到09区的具体内容如下;
  327. 1)01区。一般符号202个,如间隔符、标点、运算符、单位符号及制表符;
  328. 2)02区。序号60个,如1.~20.、(1)~(20)、①~⑩及(一)~(十);
  329. 3)03区。数字22个,如0—9及X一XII,英文字母52个,其中大写A—Z、小写
  330. a—z各26个;
  331. 4)04区。日文平假名83个;
  332. 5)05区。日文片假名86个;
  333. 6)06区。希腊字母48个;
  334. 7)07区。俄文字母66个;
  335. 8)08区。汉语拼音符号a—z26个;
  336. 9)09区。汉语拼音字母37个。
  337. (2)16区到55区。一级常用汉字区,包括了3755个一统汉字。这40个区中的汉字
  338. 是按汉语拼音排序的,同音字按笔划顺序排序。其中55区的90一94位未定义汉字。
  339. (3)56区到87区。二级汉字区,包括了3008个二级汉字,按部首排序。
  340. (4)88区到94区。自定义汉字区。
  341. 第10区到第15区的自定义符号区和第88区到第94区的自定义汉字区可由用户自行
  342. 定义国标码中未定义的符号和汉字。
  343. 3. 国家标准汉字机内码
  344. 汉字的机内码是指在计算机中表示一个汉字的编码。机内码与区位码稍有区别。如上
  345. 所述,汉字区位码的区码和位码的取值均在1~94之间,如直接用区位码作为机内码,就
  346. 会与基本ASCII码混淆。为了避免机内码与基本ASCII码的冲突,需要避开基本ASCII码
  347. 中的控制码(00H~1FH),还需与基本ASCII码中的字符相区别。为了实现这两点,可以
  348. 先在区码和位码分别加上20H,在此基础上再加80H(此处“H”表示前两位数字为十六
  349. 进制数)。经过这些处理,用机内码表示一个汉字需要占两个字节,分别 称为高位字
  350. 节和低位字节,这两位字节的机内码按如下规则表示:
  351. 高位字节=区码+20H+80H(或区码+A0H)
  352. 低位字节=位码+20H+80H(或位码+AOH)
  353. 由于汉字的区码与位码的取值范围的十六进制数均为01H~5EH(即十进制的01~94),
  354. 所以汉字的高位字节与低位字节的取值范围则为A1H~FEH(即十进制的161~254)。
  355. 例如,汉字“啊”的区位码为1601,区码和位码分别用十六进制表示即为1001H,它
  356. 的机内码的高位字节为B0H,低位字节为A1H,机内码就是B0A1H。
  357. 4. 汉字的输入码
  358. 在计算机标准键盘上,汉字的输入和西文的输入有很大的不同。西文的输入,击一次
  359. 键就直接输入了相应的字符或代码,“键入”和“输入”是同一个含义。但是在计算机上
  360. 进行汉字输入时,“键入”是指击键的动作即键盘操作的过程,而“输入”则是把所需的
  361. 汉字或字符送到指定的地方,是键盘操作的目的。目前已有多种汉字输入方法,因此就有
  362. 多种汉字输入码。汉字输入码是面向输入者的,使用不同的输入码其操作过程不同,但是
  363. 得到的结果是一样的。不管采用何种输入方法,所有输入的汉字都以机内码的形式存储在
  364. 介质中,而在进行汉字传输时,又都以交换码的形式发送和接收。
  365. 国标GB2312—80规定的区位码和沿用多年的电报码都可以作为输入码。这类汉字编码
  366. 和输入码是一一对应的,具有标准的性质,它们编码用的字符是10个阿拉伯数字,每个
  367. 汉字的码长均为等长的四个数码。
  368. 其他编码的种类很多,可从以下几点加以讨论:
  369. (2)编码类型。可分为拼音码、字形码、音形结合码等类型。
  370. (2)编码规则。不同的编码方案有很大的不同,有的规则简单,学习起来较容易记忆,‘
  371. 有的规则复杂,较难记亿。
  372. (3)编码字符集。有用字母键的,有用数字键的,有用字母键加数字键的,或者用了
  373. 更多的键作编码字符集的。
  374. (4)编码长度。它与编码字符集的大小有关,字符集越大,编码长度越短。采用26
  375. 个字母的编码,其码长一般为四位。
  376. (5)对应关系。除上面提到的区位码和电报码为一一对应的无重码编码外,其他现有
  377. 的编码方案均有一定数量的重码。所谓重码即一码对应多字。有许多编码为了增加输入的
  378. 灵活性,同一汉字用多个码来对应,例如双音编码。
  379. (6)单宁和词汇的编码。现有的编码方案,为了提高效率,除了单字外还规定了词汇
  380. 的编码,甚至使用者可以自行增加词汇库中的词汇,但在提高效率的同时也增加了记亿和
  381. 操作的复杂性。
  382. (7)码表的类型和大小。从汉字输入码到机内码的转换一股需要在机内检索码表。如
  383. 果输入码和机内码存在简单的函数关系,有公式可以计算,如区位码等编码就不需要码表,
  384. 其他没有简单函数关系的编码就需要码表。码表大小与数据结构、单字数量、词汇数量等
  385. 因素有关。国标血2312—80规定的6763个一、二级汉字,备类编码的码表从几千字节到
  386. 几万字节。随着词汇旦的增加,有的码表达到了若干兆字节。
  387. 5. 汉字的点阵码
  388. 汉字的显示和输出,普遍采用点阵方法。由于汉字数量多且字形变化大,对不同字形
  389. 汉字的输出,就有不同的点阵字形。所谓汉字的点阵码,就是汉字点阵字形的代码。存储
  390. 在介质中的全部汉字的点阵码又称为字库。 .
  391. 16x16点阵的汉字其点阵有16行,每一行上有16个点。如果每一个点用一个二进制
  392. 位来表示,则每一行有16个二进制位,需用两个字节来存放每一行上的16个点,并且规
  393. 定其点阵中二进制位0为白点,1为黑点,这样一个16X16点阵的汉字需要用2×t6即32
  394. 个字节来存放。依次类推,24×24点阵和32×32点阵的汉字则依次要用72个字节和128
  395. 个字节存放一个汉字,构成它在字库中的字模信息。
  396. 要显示或打印输出一个汉字时,计算机汉字系统根据该汉字的机内码找出其字模信息
  397. 在字库中的位置,再取出其字模信息作为字形在屏幕上显示或在打印机上打印输出。
  398. 附录2:汉字拼音对照表
  399. char PY_mb_a[] ={"啊阿吖嗄腌锕"};
  400. char PY_mb_ai[] ={"埃挨哎唉哀皑癌蔼矮艾碍爱隘捱嗳嗌嫒瑷暧砹锿霭"};
  401. char PY_mb_an[] ={"鞍氨安俺按暗岸胺案谙埯揞犴庵桉铵鹌黯"};
  402. char PY_mb_ang[] ={"肮昂盎"};
  403. char PY_mb_ao[] ={"凹敖熬翱袄傲奥懊澳坳拗嗷岙廒遨媪骜獒聱螯鏊鳌鏖"};
  404. char PY_mb_ba[] ={"芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸茇菝岜灞钯粑鲅魃"};
  405. char PY_mb_bai[] ={"白柏百摆佰败拜稗伯捭掰"};
  406. char PY_mb_ban[] ={"斑班搬扳般颁板版扮拌伴瓣半办绊阪坂贲钣瘢癍舨"};
  407. char PY_mb_bang[] ={"邦帮梆榜膀绑棒磅蚌镑傍谤蒡浜"};
  408. char PY_mb_bao[] ={"苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆刨炮勹葆孢煲鸨褓趵龅"};
  409. char PY_mb_bei[] ={"杯碑悲卑北辈背贝钡倍狈备惫焙被臂孛陂邶埤萆蓓呗悖碚鹎褙鐾鞴"};
  410. char PY_mb_ben[] ={"奔苯本笨畚坌贲锛"};
  411. char PY_mb_beng[] ={"蚌崩绷甭泵蹦迸堋嘣甏"};
  412. char PY_mb_bi[] ={"逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛秘泌匕俾埤芘荜荸萆薜吡哔狴庳愎滗濞弼妣婢嬖璧贲畀铋秕裨筚箅篦舭襞跸髀"};
  413. char PY_mb_bian[] ={"鞭边编贬扁便变卞辨辩辫遍匾弁苄忭汴缏煸砭碥窆褊蝙笾鳊"};
  414. char PY_mb_biao[] ={"标彪膘表婊骠杓飑飙飚灬镖镳瘭裱鳔髟"};
  415. char PY_mb_bie[] ={"鳖憋别瘪蹩"};
  416. char PY_mb_bin[] ={"彬斌濒滨宾摈傧豳缤玢槟殡膑镔髌鬓"};
  417. char PY_mb_bing[] ={"兵冰柄丙秉饼炳病并屏禀冫邴摒槟"};
  418. char PY_mb_bo[] ={"柏百剥薄玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳卜孛亳蕃啵饽檗擘礴钹鹁簸趵跛踣"};
  419. char PY_mb_bu[] ={"堡捕卜哺补埠不布步簿部怖埔卟逋瓿晡钚钸醭"};
  420. char PY_mb_ca[] ={"擦嚓礤"};
  421. char PY_mb_cai[] ={"猜裁材才财睬踩采彩菜蔡"};
  422. char PY_mb_can[] ={"餐参蚕残惭惨灿孱骖璨粲黪"};
  423. char PY_mb_cang[] ={"苍舱仓沧藏伧"};
  424. char PY_mb_cao[] ={"操糙槽曹草艹嘈漕螬艚"};
  425. char PY_mb_ce[] ={"厕策侧册测恻"};
  426. char PY_mb_cen[] ={"参岑涔"};
  427. char PY_mb_ceng[] ={"层蹭曾噌"};
  428. char PY_mb_cha[] ={"插叉茬茶查碴搽察岔差诧刹喳嚓猹馇汊姹杈楂槎檫锸镲衩"};
  429. char PY_mb_chai[] ={"差拆柴豺侪钗瘥虿龇"};
  430. char PY_mb_chan[] ={"搀掺蝉馋谗缠铲产阐颤单冁谄蒇廛忏潺澶孱羼婵觇禅镡蟾躔"};
  431. char PY_mb_chang[] ={"昌猖场尝常长偿肠厂敞畅唱倡伥鬯苌菖徜怅惝阊娼嫦昶氅鲳"};
  432. char PY_mb_chao[] ={"超抄钞朝嘲潮巢吵炒绰剿怊晁耖"};
  433. char PY_mb_che[] ={"车扯撤掣彻澈坼屮砗"};
  434. char PY_mb_chen[] ={"郴臣辰尘晨忱沉陈趁衬称谌谶抻嗔宸琛榇碜龀"};
  435. char PY_mb_cheng[] ={"撑称城橙成呈乘程惩澄诚承逞骋秤盛丞埕噌徵枨柽塍瞠铖铛裎蛏酲"};
  436. char PY_mb_chi[] ={"吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽傺坻墀茌叱哧啻嗤彳饬媸敕眵鸱瘛褫蚩螭笞篪豉踟魑"};
  437. char PY_mb_chong[] ={"充冲虫崇宠种重茺忡憧铳舂艟"};
  438. char PY_mb_chou[] ={"抽酬畴踌稠愁筹仇绸瞅丑臭俦帱惆瘳雠"};
  439. char PY_mb_chu[] ={"初出橱厨躇锄雏滁除楚础储矗搐触处畜亍刍怵憷绌杵楮樗褚蜍蹰黜"};
  440. char PY_mb_chuai[] ={"揣搋嘬膪踹"};
  441. char PY_mb_chuan[] ={"川穿椽传船喘串舛遄巛氚钏舡"};
  442. char PY_mb_chuang[]={"疮窗幢床闯创怆疒"};
  443. char PY_mb_chui[] ={"吹炊捶锤垂陲棰槌"};
  444. char PY_mb_chun[] ={"春椿醇唇淳纯蠢莼鹑蝽"};
  445. char PY_mb_chuo[] ={"戳绰啜辶辍踔龊"};
  446. char PY_mb_ci[] ={"差疵茨磁雌辞慈瓷词此刺赐次伺兹茈呲祠鹚粢糍"};
  447. char PY_mb_cong[] ={"聪葱囱匆从丛苁淙骢琮璁枞"};
  448. char PY_mb_cou[] ={"凑楱辏腠"};
  449. char PY_mb_cu[] ={"粗醋簇促蔟徂猝殂酢蹙蹴"};
  450. char PY_mb_cuan[] ={"蹿篡窜攒汆撺爨镩"};
  451. char PY_mb_cui[] ={"摧崔催脆瘁粹淬翠萃啐悴璀榱毳隹"};
  452. char PY_mb_cun[] ={"村存寸忖皴"};
  453. char PY_mb_cuo[] ={"磋撮搓措挫错厝嵯脞锉矬痤瘥鹾蹉躜"};
  454. char PY_mb_da[] ={"搭达答瘩打大耷哒嗒怛妲沓疸褡笪靼鞑"};
  455. char PY_mb_dai[] ={"大呆歹傣戴带殆代贷袋待逮怠埭甙呔岱迨骀绐玳黛"};
  456. char PY_mb_dan[] ={"耽担丹单郸掸胆旦氮但惮淡诞弹蛋赡石儋萏啖澹殚赕眈疸瘅聃箪"};
  457. char PY_mb_dang[] ={"当挡党荡档谠凼菪宕砀铛裆"};
  458. char PY_mb_dao[] ={"刀捣蹈倒岛祷导到稻悼道盗刂叨帱忉氘焘纛"};
  459. char PY_mb_de[] ={"德得的地锝"};
  460. char PY_mb_dei[] ={"得"};
  461. char PY_mb_deng[] ={"澄蹬灯登等瞪凳邓噔嶝戥磴镫簦"};
  462. char PY_mb_di[] ={"的堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔提氐籴诋谛邸坻荻嘀娣柢棣觌砥碲睇镝羝骶"};
  463. char PY_mb_dia[] ={"嗲"};
  464. char PY_mb_dian[] ={"颠掂滇碘点典靛垫电佃甸店惦奠淀殿阽坫巅玷钿癜癫簟踮"};
  465. char PY_mb_diao[] ={"碉叼雕凋刁掉吊钓调铞铫貂鲷"};
  466. char PY_mb_die[] ={"跌爹碟蝶迭谍叠垤堞揲喋牒瓞耋蹀鲽"};
  467. char PY_mb_ding[] ={"丁盯叮钉顶鼎锭定订仃啶玎腚碇町铤疔耵酊"};
  468. char PY_mb_diu[] ={"丢铥"};
  469. char PY_mb_dong[] ={"东冬董懂动栋侗恫冻洞咚岽峒氡胨胴硐鸫"};
  470. char PY_mb_dou[] ={"兜抖斗陡豆逗痘都蔸窦蚪篼"};
  471. char PY_mb_du[] ={"都督毒犊独读堵睹赌杜镀肚度渡妒芏嘟渎椟牍蠹笃髑黩"};
  472. char PY_mb_duan[] ={"端短锻段断缎椴煅簖"};
  473. char PY_mb_dui[] ={"堆兑队对怼憝碓"};
  474. char PY_mb_dun[] ={"墩吨蹲敦顿囤钝盾遁沌炖砘礅盹镦趸"};
  475. char PY_mb_duo[] ={"度掇哆多夺垛躲朵跺舵剁惰堕驮咄哚沲缍铎裰踱"};
  476. char PY_mb_e[] ={"阿蛾峨鹅俄额讹娥恶厄扼遏鄂饿哦噩谔垩苊莪萼呃愕屙婀轭腭锇锷鹗颚鳄"};
  477. char PY_mb_ei[] ={"诶"};
  478. char PY_mb_en[] ={"恩蒽摁"};
  479. char PY_mb_er[] ={"而儿耳尔饵洱二贰迩珥铒鸸鲕"};
  480. char PY_mb_fa[] ={"发罚筏伐乏阀法珐垡砝"};
  481. char PY_mb_fan[] ={"藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛蕃蘩幡梵燔畈蹯"};
  482. char PY_mb_fang[] ={"坊芳方肪房防妨仿访纺放匚邡枋钫舫鲂"};
  483. char PY_mb_fei[] ={"菲非啡飞肥匪诽吠肺废沸费芾狒悱淝妃绯榧贲腓斐扉砩镄痱蜚篚翡霏鲱"};
  484. char PY_mb_fen[] ={"芬酚吩氛分纷坟焚汾粉奋份忿愤粪偾瀵玢棼贲鲼鼢"};
  485. char PY_mb_feng[] ={"丰封枫蜂峰锋风疯烽逢冯缝讽奉凤俸酆葑唪沣砜"};
  486. char PY_mb_fo[] ={"佛"};
  487. char PY_mb_fou[] ={"否缶"};
  488. char PY_mb_fu[] ={"佛夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐匐凫阝郛芙芾苻茯莩菔拊呋幞怫滏艴孚驸绂绋桴赙祓砩黻黼罘稃馥蚨蜉蝠蝮麸趺跗鲋鳆"};
  489. char PY_mb_ga[] ={"噶嘎夹咖伽尬尕尜旮钆"};
  490. char PY_mb_gai[] ={"该改概钙盖溉芥丐陔垓戤赅胲"};
  491. char PY_mb_gan[] ={"干甘杆柑竿肝赶感秆敢赣坩苷尴擀泔淦澉绀橄旰矸疳酐"};
  492. char PY_mb_gang[] ={"冈刚钢缸肛纲岗港杠扛戆罡筻"};
  493. char PY_mb_gao[] ={"篙皋高膏羔糕搞镐稿告睾诰郜藁缟槔槁杲锆"};
  494. char PY_mb_ge[] ={"盖哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各合咯鬲仡哿圪塥嗝纥搿膈铪镉袼虼舸骼"};
  495. char PY_mb_gei[] ={"给"};
  496. char PY_mb_gen[] ={"根跟亘茛哏艮"};
  497. char PY_mb_geng[] ={"耕更庚羹埂耿梗颈哽赓绠鲠"};
  498. char PY_mb_gong[] ={"工攻功恭龚供躬公宫弓巩汞拱贡共廾珙肱蚣觥"};
  499. char PY_mb_gou[] ={"钩勾沟苟狗垢构购够佝诟岣遘媾缑枸觏彀笱篝鞲"};
  500. char PY_mb_gu[] ={"辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇贾嘏诂菰崮汩梏轱牯牿臌毂瞽罟钴锢鸪鹄痼蛄酤觚鲴鹘"};
  501. char PY_mb_gua[] ={"刮瓜剐寡挂褂卦诖呱栝胍鸹"};
  502. char PY_mb_guai[] ={"乖拐怪掴"};
  503. char PY_mb_guan[] ={"棺关官冠观管馆罐惯灌贯纶倌莞掼涫盥鹳鳏"};
  504. char PY_mb_guang[] ={"光广逛咣犷桄胱"};
  505. char PY_mb_gui[] ={"瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽炔匦刿庋宄妫桧炅晷皈簋鲑鳜"};
  506. char PY_mb_gun[] ={"辊滚棍衮绲磙鲧"};
  507. char PY_mb_guo[] ={"锅郭国果裹过涡馘埚掴呙帼崞猓椁虢锞聒蜾蝈"};
  508. char PY_mb_ha[] ={"蛤哈铪"};
  509. char PY_mb_hai[] ={"骸孩海氦亥害骇还咳嗨胲醢"};
  510. char PY_mb_han[] ={"酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉邗菡撖瀚晗焓顸颔蚶鼾"};
  511. char PY_mb_hang[] ={"夯杭航吭巷行沆绗颃"};
  512. char PY_mb_hao[] ={"镐壕嚎豪毫郝好耗号浩貉蒿薅嗥嚆濠灏昊皓颢蚝"};
  513. char PY_mb_he[] ={"呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺吓诃劾壑嗬阖纥曷盍颌蚵翮"};
  514. char PY_mb_hei[] ={"嘿黑"};
  515. char PY_mb_hen[] ={"痕很狠恨"};
  516. char PY_mb_heng[] ={"哼亨横衡恒蘅珩桁"};
  517. char PY_mb_hong[] ={"轰哄烘虹鸿洪宏弘红黉訇讧荭蕻薨闳泓"};
  518. char PY_mb_hou[] ={"喉侯猴吼厚候后堠後逅瘊篌糇鲎骺"};
  519. char PY_mb_hu[] ={"核呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜瓠鹄鹕鹱虍笏醐斛鹘"};
  520. char PY_mb_hua[] ={"花哗华猾滑画划化话骅桦砉铧"};
  521. char PY_mb_huai[] ={"槐徊怀淮坏踝"};
  522. char PY_mb_huan[] ={"欢环桓还缓换患唤痪豢焕涣宦幻郇奂垸萑擐圜獾洹浣漶寰逭缳锾鲩鬟"};
  523. char PY_mb_huang[] ={"荒慌黄磺蝗簧皇凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇"};
  524. char PY_mb_hui[] ={"灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘溃诙茴荟蕙咴哕喙隳洄浍彗缋桧晖恚虺蟪麾"};
  525. char PY_mb_hun[] ={"荤昏婚魂浑混诨馄阍溷珲"};
  526. char PY_mb_huo[] ={"和豁活伙火获或惑霍货祸劐藿攉嚯夥钬锪镬耠蠖"};
  527. char PY_mb_ji[] ={"给击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪藉奇系丌亟乩剞佶偈墼芨芰荠萁蒺蕺掎叽咭哜唧岌嵴洎彐屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠虮笈笄暨跻跽霁鲚鲫髻麂"};
  528. char PY_mb_jia[] ={"嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁茄嘏伽郏葭岬浃迦珈戛胛恝铗铪镓痂瘕袷蛱笳袈跏"};
  529. char PY_mb_jian[] ={"歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僭谏谫谮菅蒹搛囝湔蹇謇缣枧楗戋戬牮犍毽腱睑锏鹣裥笕翦趼踺鲣鞯"};
  530. char PY_mb_jiang[] ={"虹僵姜将浆江疆蒋桨奖讲匠酱降强茳洚绛缰犟礓耩糨豇"};
  531. char PY_mb_jiao[] ={"蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖觉校佼僬艽茭挢噍峤徼姣敫皎鹪蛟醮跤鲛"};
  532. char PY_mb_jie[] ={"揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届偈讦诘卩拮喈嗟婕孑桀碣锴疖颉蚧羯鲒骱"};
  533. char PY_mb_jin[] ={"巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲卺荩堇噤馑廑妗缙瑾槿赆觐钅衿矜"};
  534. char PY_mb_jing[] ={"劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净刭儆阱陉菁獍憬泾迳弪婧肼胫腈旌靓"};
  535. char PY_mb_jiong[] ={"炯窘冂迥扃"};
  536. char PY_mb_jiu[] ={"揪究纠玖韭久灸九酒厩救旧臼舅咎就疚僦啾阄柩桕鸠鹫赳鬏"};
  537. char PY_mb_ju[] ={"车柜鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧倨讵苣苴莒掬遽屦琚枸椐榘榉橘犋飓钜锔窭裾趄醵踽龃雎瞿鞫"};
  538. char PY_mb_juan[] ={"捐鹃娟倦眷卷绢圈鄄狷涓桊蠲锩镌隽"};
  539. char PY_mb_jue[] ={"嚼脚角撅攫抉掘倔爵觉决诀绝厥劂谲矍堀蕨噘崛獗孓珏桷橛爝镢蹶觖"};
  540. char PY_mb_jun[] ={"龟均菌钧军君峻俊竣浚郡骏捃皲筠麇"};
  541. char PY_mb_ka[] ={"喀咖卡咯佧咔胩"};
  542. char PY_mb_kai[] ={"开揩楷凯慨剀垲蒈忾恺铠锎锴"};
  543. char PY_mb_kan[] ={"槛刊堪勘坎砍看侃凵莰阚戡龛瞰"};
  544. char PY_mb_kang[] ={"康慷糠扛抗亢炕伉闶钪"};
  545. char PY_mb_kao[] ={"考拷烤靠尻栲犒铐"};
  546. char PY_mb_ke[] ={"呵坷苛柯棵磕颗科壳咳可渴克刻客课嗑岢恪溘骒缂珂轲氪瞌钶铪锞稞疴窠颏蚵蝌髁"};
  547. char PY_mb_ken[] ={"肯啃垦恳裉"};
  548. char PY_mb_keng[] ={"坑吭胫铒铿"};
  549. char PY_mb_kong[] ={"空恐孔控倥崆箜"};
  550. char PY_mb_kou[] ={"抠口扣寇芤蔻叩眍筘"};
  551. char PY_mb_ku[] ={"枯哭窟苦酷库裤刳堀喾绔骷"};
  552. char PY_mb_kua[] ={"夸垮挎跨胯侉锞"};
  553. char PY_mb_kuai[] ={"会块筷侩快蒯郐哙狯脍"};
  554. char PY_mb_kuan[] ={"宽款髋"};
  555. char PY_mb_kuang[] ={"匡筐狂框矿眶旷况诓诳邝圹夼哐纩贶"};
  556. char PY_mb_kui[] ={"亏盔岿窥葵奎魁傀馈愧溃馗匮夔隗蒉揆喹喟悝愦逵暌睽聩蝰篑跬"};
  557. char PY_mb_kun[] ={"坤昆捆困悃阃琨锟醌鲲髡"};
  558. char PY_mb_kuo[] ={"括扩廓阔蛞"};
  559. char PY_mb_la[] ={"垃拉喇蜡腊辣啦落剌邋旯砬瘌"};
  560. char PY_mb_lai[] ={"莱来赖崃徕涞濑赉睐铼癞籁"};
  561. char PY_mb_lan[] ={"蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥岚漤榄斓罱镧褴"};
  562. char PY_mb_lang[] ={"琅榔狼廊郎朗浪莨蒗啷阆锒稂螂"};
  563. char PY_mb_lao[] ={"捞劳牢老佬姥酪烙涝落络唠崂栳铑铹痨耢醪"};
  564. char PY_mb_le[] ={"勒乐了仂叻泐鳓"};
  565. char PY_mb_lei[] ={"勒雷镭蕾磊累儡垒擂肋类泪羸诔嘞嫘缧檑耒酹"};
  566. char PY_mb_leng[] ={"棱楞冷塄愣"};
  567. char PY_mb_li[] ={"厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩鬲俪俚郦坜苈莅蓠藜呖唳喱猁溧澧逦娌嫠骊缡枥栎轹戾砺砬詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧"};
  568. char PY_mb_lia[] ={"俩"};
  569. char PY_mb_lian[] ={"联莲连镰廉怜涟帘敛脸链恋炼练蔹奁潋濂琏楝殓臁裢裣蠊鲢"};
  570. char PY_mb_liang[] ={"俩粮凉梁粱良两辆量晾亮谅墚莨椋踉魉"};
  571. char PY_mb_liao[] ={"撩聊僚疗燎寥辽潦了撂镣廖料蓼尥嘹獠寮缭钌鹩"};
  572. char PY_mb_lie[] ={"列裂烈劣猎冽埒捩咧洌趔躐鬣"};
  573. char PY_mb_lin[] ={"琳林磷霖临邻鳞淋凛赁吝拎蔺啉嶙廪懔遴檩辚膦瞵粼躏麟"};
  574. char PY_mb_ling[] ={"棱玲菱零龄铃伶羚凌灵陵岭领另令酃苓呤囹泠绫柃棂瓴聆蛉翎鲮"};
  575. char PY_mb_liu[] ={"溜琉榴硫馏留刘瘤流柳六碌陆浏遛骝绺旒熘锍镏鹨鎏"};
  576. char PY_mb_lo[] ={"咯"};
  577. char PY_mb_long[] ={"龙聋咙笼窿隆垄拢陇弄垅茏泷珑栊胧砻癃"};
  578. char PY_mb_lou[] ={"楼娄搂篓漏陋露偻蒌喽嵝镂瘘耧蝼髅"};
  579. char PY_mb_lu[] ={"六芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮绿垆撸噜泸渌漉逯璐栌橹轳辂辘贲氇胪镥鸬鹭簏舻鲈"};
  580. char PY_mb_lv[] ={"驴吕铝侣旅履屡缕虑氯律率滤绿偻捋闾榈膂稆褛"};
  581. char PY_mb_lve[] ={"掠略锊"};
  582. char PY_mb_luan[] ={"峦挛孪滦卵乱脔娈栾鸾銮"};
  583. char PY_mb_lun[] ={"抡轮伦仑沦纶论囵"};
  584. char PY_mb_luo[] ={"铬咯烙萝螺罗逻锣箩骡裸落洛骆络倮蠃荦捋摞猡泺漯珞椤脶硌镙瘰雒"};
  585. char PY_mb_m[] ={"呒"};
  586. char PY_mb_ma[] ={"妈麻玛码蚂马骂嘛吗摩抹唛犸嬷杩蟆"};
  587. char PY_mb_mai[] ={"埋买麦卖迈脉劢荬霾"};
  588. char PY_mb_man[] ={"埋瞒馒蛮满蔓曼慢漫谩墁幔缦熳镘颟螨鳗鞔"};
  589. char PY_mb_mang[] ={"芒茫盲氓忙莽邙漭硭蟒"};
  590. char PY_mb_mao[] ={"猫茅锚毛矛铆卯茂冒帽貌贸袤茆峁泖瑁昴牦耄旄懋瞀蝥蟊髦"};
  591. char PY_mb_me[] ={"么"};
  592. char PY_mb_mei[] ={"玫枚梅酶霉煤没眉媒镁每美昧寐妹媚莓嵋猸浼湄楣镅鹛袂魅"};
  593. char PY_mb_men[] ={"门闷们扪焖懑钔"};
  594. char PY_mb_meng[] ={"萌蒙檬盟锰猛梦孟勐甍瞢懵朦礞虻蜢蠓艋艨"};
  595. char PY_mb_mi[] ={"眯醚靡糜迷谜弥米秘觅泌蜜密幂芈冖谧蘼咪嘧猕汨宓弭纟脒祢敉糸縻麋"};
  596. char PY_mb_mian[] ={"棉眠绵冕免勉娩缅面沔渑湎宀腼眄"};
  597. char PY_mb_miao[] ={"苗描瞄藐秒渺庙妙喵邈缈缪杪淼眇鹋"};
  598. char PY_mb_mie[] ={"蔑灭乜咩蠛篾"};
  599. char PY_mb_min[] ={"民抿皿敏悯闽苠岷闵泯缗玟珉愍黾鳘"};
  600. char PY_mb_ming[] ={"明螟鸣铭名命冥茗溟暝瞑酩"};
  601. char PY_mb_miu[] ={"谬缪"};
  602. char PY_mb_mo[] ={"脉没摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌万谟茉蓦馍嫫殁镆秣瘼耱貊貘麽"};
  603. char PY_mb_mou[] ={"谋牟某侔哞缪眸蛑鍪"};
  604. char PY_mb_mu[] ={"模牟拇牡亩姆母墓暮幕募慕木目睦牧穆仫坶苜沐毪钼"};
  605. char PY_mb_na[] ={"拿哪呐钠那娜纳捺肭镎衲"};
  606. char PY_mb_nai[] ={"氖乃奶耐奈鼐佴艿萘柰"};
  607. char PY_mb_nan[] ={"南男难喃囡楠腩蝻赧"};
  608. char PY_mb_nang[] ={"囊攮囔馕曩"};
  609. char PY_mb_nao[] ={"挠脑恼闹淖孬垴呶猱瑙硇铙蛲"};
  610. char PY_mb_ne[] ={"哪呢讷"};
  611. char PY_mb_nei[] ={"馁内"};
  612. char PY_mb_nen[] ={"嫩恁"};
  613. char PY_mb_neng[] ={"能"};
  614. char PY_mb_ng[] ={"嗯"};
  615. char PY_mb_ni[] ={"呢妮霓倪泥尼拟你匿腻逆溺伲坭猊怩昵旎祢慝睨铌鲵"};
  616. char PY_mb_nian[] ={"蔫拈年碾撵捻念廿埝辇黏鲇鲶"};
  617. char PY_mb_niang[] ={"娘酿"};
  618. char PY_mb_niao[] ={"鸟尿茑嬲脲袅"};
  619. char PY_mb_nie[] ={"捏聂孽啮镊镍涅乜陧蘖嗫颞臬蹑"};
  620. char PY_mb_nin[] ={"您"};
  621. char PY_mb_ning[] ={"柠狞凝宁拧泞佞咛甯聍"};
  622. char PY_mb_niu[] ={"牛扭钮纽拗狃忸妞"};
  623. char PY_mb_nong[] ={"脓浓农弄侬哝"};
  624. char PY_mb_nou[] ={"耨"};
  625. char PY_mb_nu[] ={"奴努怒弩胬孥驽"};
  626. char PY_mb_nv[] ={"女恧钕衄"};
  627. char PY_mb_nve[] ={"虐疟"};
  628. char PY_mb_nuan[] ={"暖"};
  629. char PY_mb_nuo[] ={"娜挪懦糯诺傩搦喏锘"};
  630. char PY_mb_o[] ={"哦喔噢"};
  631. char PY_mb_ou[] ={"欧鸥殴藕呕偶沤区讴怄瓯耦"};
  632. char PY_mb_pa[] ={"扒耙啪趴爬帕怕琶葩杷筢"};
  633. char PY_mb_pai[] ={"拍排牌徘湃派迫俳蒎哌"};
  634. char PY_mb_pan[] ={"番攀潘盘磐盼畔判叛胖拚丬爿泮贲袢襻蟠蹒"};
  635. char PY_mb_pang[] ={"膀磅镑乓庞旁耪胖彷滂逄螃"};
  636. char PY_mb_pao[] ={"抛咆刨炮袍跑泡匏狍庖脬疱"};
  637. char PY_mb_pei[] ={"呸胚培裴赔陪配佩沛辔帔旆锫醅霈"};
  638. char PY_mb_pen[] ={"喷盆湓"};
  639. char PY_mb_peng[] ={"砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰堋嘭怦蟛"};
  640. char PY_mb_pi[] ={"辟否坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬丕仳陂陴邳郫圮埤鼙芘擗噼庀淠媲纰枇甓睥罴铍癖裨疋蚍蜱貔"};
  641. char PY_mb_pian[] ={"扁便篇偏片骗谝骈缏犏胼翩蹁"};
  642. char PY_mb_piao[] ={"飘漂瓢票朴剽嘌嫖骠缥殍瞟螵"};
  643. char PY_mb_pie[] ={"撇瞥丿苤氕"};
  644. char PY_mb_pin[] ={"拼频贫品聘姘嫔榀牝颦"};
  645. char PY_mb_ping[] ={"冯乒坪苹萍平凭瓶评屏俜娉枰鲆"};
  646. char PY_mb_po[] ={"泊繁坡泼颇婆破魄迫粕朴叵陂鄱珀攴攵钋钷皤笸"};
  647. char PY_mb_pou[] ={"剖裒掊"};
  648. char PY_mb_pu[] ={"堡暴脯扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑匍噗溥濮璞氆镤镨蹼"};
  649. char PY_mb_qi[] ={"稽缉期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫亟亓俟圻芑芪荠萋葺蕲嘁屺岐汔淇骐绮琪琦杞桤槭耆欹祺憩碛颀蛴蜞綦綮蹊鳍麒"};
  650. char PY_mb_qia[] ={"卡掐恰洽葜袷髂"};
  651. char PY_mb_qian[] ={"牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉纤倩佥阡芊芡茜荨掮岍悭慊骞搴褰缱椠犍肷愆钤虔箝羟"};
  652. char PY_mb_qiang[] ={"枪呛腔羌墙蔷强抢丬戕嫱樯戗炝锵镪襁蜣羟跄"};
  653. char PY_mb_qiao[] ={"壳橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍雀劁诮谯荞峤愀憔缲樵硗铫跷鞒"};
  654. char PY_mb_qie[] ={"切茄且怯窃伽郄惬慊妾挈锲箧趄"};
  655. char PY_mb_qin[] ={"钦侵亲秦琴勤芹擒禽寝沁芩揿吣嗪噙廑檎锓矜覃螓衾"};
  656. char PY_mb_qing[] ={"亲青轻氢倾卿清擎晴氰情顷请庆苘圊檠磬锖蜻罄箐綮謦鲭黥"};
  657. char PY_mb_qiong[] ={"琼穷邛茕穹蛩筇跫銎"};
  658. char PY_mb_qiu[] ={"仇龟秋丘邱球求囚酋泅俅巯犰湫逑遒楸赇虬蚯蝤裘糗鳅"};
  659. char PY_mb_qu[] ={"趋区蛆曲躯屈驱渠取娶龋趣去戌诎劬凵苣蕖蘧岖衢阒璩觑氍朐祛磲鸲癯蛐蠼麴瞿黢"};
  660. char PY_mb_quan[] ={"圈颧权醛泉全痊拳犬券劝诠荃犭悛绻辁畎铨蜷筌鬈"};
  661. char PY_mb_que[] ={"缺炔瘸却鹊榷确雀阕阙悫"};
  662. char PY_mb_qui[] ={"鼽"};
  663. char PY_mb_qun[] ={"裙群逡麇"};
  664. char PY_mb_ran[] ={"然燃冉染苒蚺髯"};
  665. char PY_mb_rang[] ={"瓤壤攘嚷让禳穰"};
  666. char PY_mb_rao[] ={"饶扰绕荛娆桡"};
  667. char PY_mb_re[] ={"惹热喏"};
  668. char PY_mb_ren[] ={"壬仁人忍韧任认刃妊纫亻仞荏葚饪轫稔衽"};
  669. char PY_mb_reng[] ={"扔仍"};
  670. char PY_mb_ri[] ={"日"};
  671. char PY_mb_rong[] ={"戎茸蓉荣融熔溶容绒冗嵘狨榕肜蝾"};
  672. char PY_mb_rou[] ={"揉柔肉糅蹂鞣"};
  673. char PY_mb_ru[] ={"茹蠕儒孺如辱乳汝入褥蓐薷嚅洳溽濡缛铷襦颥"};
  674. char PY_mb_ruan[] ={"软阮朊"};
  675. char PY_mb_rui[] ={"蕊瑞锐芮蕤枘睿蚋"};
  676. char PY_mb_run[] ={"闰润"};
  677. char PY_mb_ruo[] ={"若弱偌箬"};
  678. char PY_mb_sa[] ={"撒洒萨卅仨脎飒"};
  679. char PY_mb_sai[] ={"腮鳃塞赛噻"};
  680. char PY_mb_san[] ={"三叁伞散馓毵糁"};
  681. char PY_mb_sang[] ={"桑嗓丧搡磉颡"};
  682. char PY_mb_sao[] ={"搔骚扫嫂埽缫臊瘙鳋"};
  683. char PY_mb_se[] ={"塞瑟色涩啬铯穑"};
  684. char PY_mb_sen[] ={"森"};
  685. char PY_mb_seng[] ={"僧"};
  686. char PY_mb_sha[] ={"莎砂杀刹沙纱傻啥煞杉厦唼歃铩痧裟霎鲨"};
  687. char PY_mb_shai[] ={"色筛晒"};
  688. char PY_mb_shan[] ={"掺单珊苫杉山删煽衫闪陕擅赡膳善汕扇缮栅剡讪鄯埏芟彡潸姗嬗骟膻禅钐疝蟮舢跚鳝髟"};
  689. char PY_mb_shang[] ={"墒伤商赏晌上尚裳垧绱殇熵觞"};
  690. char PY_mb_shao[] ={"鞘梢捎稍烧芍勺韶少哨邵绍劭苕潲杓蛸筲艄"};
  691. char PY_mb_she[] ={"奢赊蛇舌舍赦摄射慑涉社设折厍佘揲猞滠歙畲铊麝"};
  692. char PY_mb_shei[] ={"谁"};
  693. char PY_mb_shen[] ={"参砷申呻伸身深娠绅神沈审婶甚肾慎渗什诜谂莘葚哂渖椹胂矧蜃"};
  694. char PY_mb_sheng[] ={"乘声生甥牲升绳省盛剩胜圣嵊渑晟眚笙"};
  695. char PY_mb_shi[] ={"匙师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试似殖峙谥埘莳蓍弑饣轼贳炻礻铈铊螫舐筮酾豕鲥鲺"};
  696. char PY_mb_shou[] ={"收手首守寿授售受瘦兽扌狩绶艏"};
  697. char PY_mb_shu[] ={"蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕丨倏塾菽摅沭澍姝纾毹腧殳镯秫疋"};
  698. char PY_mb_shua[] ={"刷耍唰"};
  699. char PY_mb_shuai[] ={"率摔衰甩帅蟀"};
  700. char PY_mb_shuan[] ={"栓拴闩涮"};
  701. char PY_mb_shuang[]={"霜双爽泷孀"};
  702. char PY_mb_shui[] ={"水睡税说氵"};
  703. char PY_mb_shun[] ={"吮瞬顺舜"};
  704. char PY_mb_shuo[] ={"数说硕朔烁蒴搠妁槊铄"};
  705. char PY_mb_si[] ={"斯撕嘶思私司丝死肆寺嗣四伺似饲巳厮俟兕厶咝饣汜泗澌姒驷缌祀锶鸶耜蛳笥"};
  706. char PY_mb_song[] ={"松耸怂颂送宋讼诵凇菘崧嵩忪悚淞竦"};
  707. char PY_mb_sou[] ={"搜艘擞嗽叟薮嗖嗾馊溲飕瞍锼螋"};
  708. char PY_mb_su[] ={"苏酥俗素速粟僳塑溯宿诉肃缩夙谡蔌嗉愫涑簌觫稣"};
  709. char PY_mb_suan[] ={"酸蒜算狻"};
  710. char PY_mb_sui[] ={"尿虽隋随绥髓碎岁穗遂隧祟谇荽濉邃燧眭睢"};
  711. char PY_mb_sun[] ={"孙损笋荪狲飧榫隼"};
  712. char PY_mb_suo[] ={"莎蓑梭唆缩琐索锁所唢嗦嗍娑桫挲睃羧"};
  713. char PY_mb_ta[] ={"塌他它她塔獭挞蹋踏拓闼溻漯遢榻沓铊趿鳎"};
  714. char PY_mb_tai[] ={"胎苔抬台泰酞太态汰邰薹骀肽炱钛跆鲐"};
  715. char PY_mb_tan[] ={"弹坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭郯澹昙赕忐钽锬镡覃"};
  716. char PY_mb_tang[] ={"汤塘搪堂棠膛唐糖倘躺淌趟烫傥帑饧溏瑭樘铛铴镗耥螗螳羰醣"};
  717. char PY_mb_tao[] ={"掏涛滔绦萄桃逃淘陶讨套鼗叨啕洮韬焘饕"};
  718. char PY_mb_te[] ={"特忒忑铽"};
  719. char PY_mb_teng[] ={"藤腾疼誊滕"};
  720. char PY_mb_ti[] ={"梯剔踢锑提题蹄啼体替嚏惕涕剃屉倜荑悌逖绨缇鹈裼醍"};
  721. char PY_mb_tian[] ={"天添填田甜恬舔腆掭忝阗殄畋钿锘"};
  722. char PY_mb_tiao[] ={"调挑条迢眺跳佻苕祧铫窕蜩笤粜龆鲦髫"};
  723. char PY_mb_tie[] ={"贴铁帖萜锇餮"};
  724. char PY_mb_ting[] ={"厅听烃汀廷停亭庭挺艇莛葶婷梃铤蜓霆"};
  725. char PY_mb_tong[] ={"通桐酮瞳同铜彤童桶捅筒统痛佟僮仝垌茼嗵峒恸潼砼"};
  726. char PY_mb_tou[] ={"偷投头透亠钭骰"};
  727. char PY_mb_tu[] ={"凸秃突图徒途涂屠土吐兔堍荼菟钍酴"};
  728. char PY_mb_tuan[] ={"湍团抟彖疃"};
  729. char PY_mb_tui[] ={"推颓腿蜕褪退煺"};
  730. char PY_mb_tun[] ={"囤褪吞屯臀氽饨暾豚"};
  731. char PY_mb_tuo[] ={"说拖托脱鸵陀驮驼椭妥拓唾乇佗坨庹沱柝柁橐砣铊箨酡跎鼍"};
  732. char PY_mb_wa[] ={"挖哇蛙洼娃瓦袜佤娲腽"};
  733. char PY_mb_wai[] ={"歪外崴"};
  734. char PY_mb_wan[] ={"蔓豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕剜芄莞菀纨绾琬脘畹蜿鞔"};
  735. char PY_mb_wang[] ={"汪王亡枉网往旺望忘妄罔尢惘辋魍"};
  736. char PY_mb_wei[] ={"威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫偎诿隈隗圩葳薇囗帏帷崴嵬猥猬闱沩洧涠逶娓玮韪軎炜煨痿艉鲔"};
  737. char PY_mb_wen[] ={"瘟温蚊文闻纹吻稳紊问刎阌汶玟璺雯"};
  738. char PY_mb_weng[] ={"嗡翁瓮蓊蕹"};
  739. char PY_mb_wo[] ={"挝蜗涡窝我斡卧握沃倭莴喔幄渥肟硪龌"};
  740. char PY_mb_wu[] ={"恶巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误兀仵阢邬圬芴唔庑怃忤浯寤迕妩婺骛杌牾於焐鹉鹜痦蜈鋈鼯"};
  741. char PY_mb_xi[] ={"昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细匚僖兮隰郗茜菥葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷歙熹禊禧皙穸裼蜥螅蟋舄舾羲粞翕醯蹊鼷"};
  742. char PY_mb_xia[] ={"瞎虾匣霞辖暇峡侠狭下厦夏吓呷狎遐瑕柙硖罅黠"};
  743. char PY_mb_xian[] ={"铣洗掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线冼苋莶藓岘猃暹娴氙燹祆鹇痃痫蚬筅籼酰跣跹霰"};
  744. char PY_mb_xiang[] ={"降相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象芗葙饷庠骧缃蟓鲞飨"};
  745. char PY_mb_xiao[] ={"萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效哓潇逍骁绡枭枵蛸筱箫魈"};
  746. char PY_mb_xie[] ={"解楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑血叶偕亵勰燮薤撷獬廨渫瀣邂绁缬榭榍颉躞鲑骱"};
  747. char PY_mb_xin[] ={"薪芯锌欣辛新忻心信衅囟馨莘忄昕歆镡鑫"};
  748. char PY_mb_xing[] ={"省星腥猩惺兴刑型形邢行醒幸杏性姓陉荇荥擤饧悻硎"};
  749. char PY_mb_xiong[] ={"兄凶胸匈汹雄熊芎"};
  750. char PY_mb_xiu[] ={"臭宿休修羞朽嗅锈秀袖绣咻岫馐庥溴鸺貅髹"};
  751. char PY_mb_xu[] ={"墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续吁诩勖圩蓿洫浒溆顼栩煦盱胥糈醑"};
  752. char PY_mb_xuan[] ={"券轩喧宣悬旋玄选癣眩绚儇谖萱揎泫渲漩璇楦暄炫煊碹铉镟"};
  753. char PY_mb_xue[] ={"削靴薛学穴雪血谑噱泶踅鳕"};
  754. char PY_mb_xun[] ={"浚勋熏循旬询寻驯巡殉汛训讯逊迅巽郇埙荀荨蕈薰峋徇獯恂洵浔曛窨醺鲟"};
  755. char PY_mb_ya[] ={"压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶轧伢垭揠岈迓娅琊桠氩砑睚痖疋"};
  756. char PY_mb_yan[] ={"铅焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殷厣赝剡俨偃兖讠谳阽郾鄢芫菸崦恹闫阏湮滟妍嫣琰檐晏胭腌焱罨筵酽魇餍鼹鼽"};
  757. char PY_mb_yang[] ={"殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾徉怏泱炀烊恙蛘鞅"};
  758. char PY_mb_yao[] ={"侥啮疟邀腰妖瑶摇尧遥窑谣姚咬舀药要耀钥夭爻吆崤崾徭幺珧杳轺曜肴铫鹞窈繇鳐"};
  759. char PY_mb_ye[] ={"邪咽椰噎耶爷野冶也页掖业叶曳腋夜液盅靥谒邺揶琊晔烨铘"};
  760. char PY_mb_yi[] ={"艾尾一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎刈劓佚佾诒阝圯埸懿苡荑薏弈奕挹弋呓咦咿噫峄嶷猗饴怿怡悒漪迤驿缢殪轶贻欹旖熠眙钇铊镒镱痍瘗癔翊衤蜴舣羿翳酏黟"};
  761. char PY_mb_yin[] ={"茵荫因殷音阴姻吟银淫寅饮尹引隐印胤鄞廴垠堙茚吲喑狺夤洇湮氤铟瘾窨蚓霪龈"};
  762. char PY_mb_ying[] ={"英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映嬴郢茔荥莺萦蓥撄嘤膺滢潆瀛瑛璎楹媵鹦瘿颍罂"};
  763. char PY_mb_yo[] ={"哟育唷"};
  764. char PY_mb_yong[] ={"拥佣臃痈庸雍踊蛹咏泳涌永恿勇用俑壅墉喁慵邕镛甬鳙饔"};
  765. char PY_mb_you[] ={"幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼卣攸侑莠莜莸尢呦囿宥柚猷牖铕疣蚰蚴蝣蝤繇鱿黝鼬"};
  766. char PY_mb_yu[] ={"蔚尉迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭禺毓伛俣谀谕萸菀蓣揄圄圉嵛狳饫馀庾阈鬻妪妤纡瑜昱觎腴欤於煜熨燠肀聿钰鹆鹬瘐瘀窬窳蜮蝓竽臾舁雩龉"};
  767. char PY_mb_yuan[] ={"鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院塬芫掾圜沅媛瑗橼爰眢鸢螈箢鼋"};
  768. char PY_mb_yue[] ={"乐说曰约越跃钥岳粤月悦阅龠哕瀹栎樾刖钺"};
  769. char PY_mb_yun[] ={"员耘云郧匀陨允运蕴酝晕韵孕郓芸狁恽愠纭韫殒昀氲熨筠"};
  770. char PY_mb_za[] ={"匝砸杂扎咋拶咂"};
  771. char PY_mb_zai[] ={"栽哉灾宰载再在崽甾"};
  772. char PY_mb_zan[] ={"咱攒暂赞拶瓒昝簪糌趱錾"};
  773. char PY_mb_zang[] ={"藏赃脏葬驵臧"};
  774. char PY_mb_zao[] ={"遭糟凿藻枣早澡蚤躁噪造皂灶燥唣"};
  775. char PY_mb_ze[] ={"责择则泽咋仄赜啧帻迮昃笮箦舴"};
  776. char PY_mb_zei[] ={"贼"};
  777. char PY_mb_zen[] ={"怎谮"};
  778. char PY_mb_zeng[] ={"增憎曾赠缯甑罾锃"};
  779. char PY_mb_zha[] ={"查扎喳渣札轧铡闸眨栅榨咋乍炸诈柞揸吒咤哳喋楂砟痄蚱龃齄"};
  780. char PY_mb_zhai[] ={"翟择摘斋宅窄债寨砦瘵"};
  781. char PY_mb_zhan[] ={"颤瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽谵搌骣旃"};
  782. char PY_mb_zhang[] ={"长樟章彰漳张掌涨杖丈帐账仗胀瘴障仉鄣幛嶂獐嫜璋蟑"};
  783. char PY_mb_zhao[] ={"朝招昭找沼赵照罩兆肇召爪着诏啁棹钊笊"};
  784. char PY_mb_zhe[] ={"遮折哲蛰辙者锗蔗这浙着谪摺柘辄磔鹧褶蜇赭"};
  785. char PY_mb_zhen[] ={"珍斟真甄砧臻贞针侦枕疹诊震振镇阵帧圳蓁浈溱缜桢椹榛轸赈胗朕祯畛稹鸩箴"};
  786. char PY_mb_zheng[] ={"蒸挣睁征狰争怔整拯正政症郑证诤峥徵钲铮筝鲭"};
  787. char PY_mb_zhi[] ={"识芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒卮陟郅埴芷摭帙徵夂忮彘咫骘栉枳栀桎轵轾贽胝膣祉祗黹雉鸷痣蛭絷酯跖踬踯豸觯"};
  788. char PY_mb_zhong[] ={"中盅忠钟衷终种肿重仲众冢忪锺螽舯踵"};
  789. char PY_mb_zhou[] ={"舟周州洲诌粥轴肘帚咒皱宙昼骤荮啁妯纣绉胄碡籀繇酎"};
  790. char PY_mb_zhu[] ={"属术珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻丶伫侏邾苎茱洙渚潴杼槠橥炷铢疰瘃褚竺箸舳翥躅麈"};
  791. char PY_mb_zhua[] ={"挝抓爪"};
  792. char PY_mb_zhuai[] ={"拽转"};
  793. char PY_mb_zhuan[] ={"传专砖转撰赚篆啭馔沌颛"};
  794. char PY_mb_zhuang[]={"幢桩庄装妆撞壮状奘戆"};
  795. char PY_mb_zhui[] ={"椎锥追赘坠缀惴骓缒隹"};
  796. char PY_mb_zhun[] ={"谆准饨肫窀"};
  797. char PY_mb_zhuo[] ={"捉拙卓桌琢茁酌啄着灼浊倬诼擢浞涿濯焯禚斫镯"};
  798. char PY_mb_zi[] ={"吱兹咨资姿滋淄孜紫仔籽滓子自渍字谘茈嵫姊孳缁梓辎赀恣眦锱秭耔笫粢趑觜訾龇鲻髭"};
  799. char PY_mb_zong[] ={"鬃棕踪宗综总纵偬枞腙粽"};
  800. char PY_mb_zou[] ={"邹走奏揍诹陬鄹驺鲰"};
  801. char PY_mb_zu[] ={"租足卒族祖诅阻组俎菹镞"};
  802. char PY_mb_zuan[] ={"钻纂攥缵躜"};
  803. char PY_mb_zui[] ={"嘴醉最罪蕞觜"};
  804. char PY_mb_zun[] ={"尊遵撙樽鳟"};
  805. char PY_mb_zuo[] ={"撮琢昨左佐柞做作坐座阼唑嘬怍胙祚砟酢"};
  806. */