导读:
本文转自
http://www.cnblogs.com/junjie/archive/2005/09/08/232525.html
1
using
System;
2
using
System.Collections;
3
using
System.Text;
4
namespace
JJBase.String
5
{
6
/**//// <summary>
7
/// JJBase 的摘要说明。
8
/// </summary>
9
///
10
汉字转化成拼音#region 汉字转化成拼音
11
12
public class Chinese2Spell
13
{
14
15
/**//// <summary>
16
/// 获得拼音
17
/// </summary>
18
/// <param name="str_Spell">汉字</param>
19
/// <returns></returns>
20
//调用格式:GetSpell(string str_Spell)
21
//str_Spell是要转换的汉字
22
//返回结果是转化成的拼音
23
//目前还不完善,例如“爨”字转换不出来,需要进一步完善
24
public string GetSpell(string str_Chinese)
25
{
26
27
try
28
{
29
Hashtable t=hb();
30
31
byte[] b=System.Text.Encoding.Default.GetBytes(str_Chinese);
32
int p;
33
StringBuilder ret=new StringBuilder();
34
for(int i=0;i< b.Length;i++)
35
{
36
p=(int)b[i];
37
if(p>128)//160? or 128? 原文是160,待以后考证
38
{
39
p=p*256+b[++i]-65536;
40
ret.Append(g(t,p));
41
}
42
else
43
{
44
ret.Append((char)p);
45
}
46
}
47
t.Clear();
48
return ret.ToString();
49
}
50
catch
51
{
52
return "";
53
}
54
55
}
56
57
private string g(Hashtable ht,int num)
58
{
59
if(num < -20319||num > -10247)
60
return "";
61
while(!ht.ContainsKey(num))
62
num--;
63
return ht[num].ToString();
64
}
65
private Hashtable hb()
66
{
67
//尚不晚完善,例如“爨”就没有转换出来
68
Hashtable ht=new Hashtable();
69
ht.Add(-20319,"a");
70
ht.Add(-20317,"ai");ht.Add(-20304,"an"); ht.Add(-20295,"ang");
71
ht.Add(-20292,"ao");ht.Add(-20283,"ba"); ht.Add(-20265,"bai");
72
ht.Add(-20257,"ban");ht.Add(-20242,"bang"); ht.Add(-20230,"bao");
73
ht.Add(-20051,"bei"); ht.Add(-20036,"ben"); ht.Add(-20032,"beng");
74
ht.Add(-20026,"bi"); ht.Add(-20002,"bian"); ht.Add(-19990,"biao");
75
ht.Add(-19986,"bie"); ht.Add(-19982,"bin"); ht.Add(-19976,"bing");
76
ht.Add(-19805,"bo"); ht.Add(-19784,"bu"); ht.Add(-19775,"ca");
77
ht.Add(-19774,"cai"); ht.Add(-19763,"can"); ht.Add(-19756,"cang");
78
ht.Add(-19751,"cao"); ht.Add(-19746,"ce"); ht.Add(-19741,"ceng");
79
ht.Add(-19739,"cha"); ht.Add(-19728,"chai"); ht.Add(-19725,"chan");
80
ht.Add(-19715,"chang"); ht.Add(-19540,"chao"); ht.Add(-19531,"che");
81
ht.Add(-19525,"chen"); ht.Add(-19515,"cheng"); ht.Add(-19500,"chi");
82
ht.Add(-19484,"chong"); ht.Add(-19479,"chou"); ht.Add(-19467,"chu");
83
ht.Add(-19289,"chuai"); ht.Add(-19288,"chuan"); ht.Add(-19281,"chuang");
84
ht.Add(-19275,"chui"); ht.Add(-19270,"chun"); ht.Add(-19263,"chuo");
85
ht.Add(-19261,"ci"); ht.Add(-19249,"cong"); ht.Add(-19243,"cou");
86
ht.Add(-19242,"cu"); ht.Add(-19238,"cuan"); ht.Add(-19235,"cui");
87
ht.Add(-19227,"cun"); ht.Add(-19224,"cuo"); ht.Add(-19218,"da");
88
ht.Add(-19212,"dai"); ht.Add(-19038,"dan"); ht.Add(-19023,"dang");
89
ht.Add(-19018,"dao"); ht.Add(-19006,"de"); ht.Add(-19003,"deng");
90
ht.Add(-18996,"di"); ht.Add(-18977,"dian"); ht.Add(-18961,"diao");
91
ht.Add(-18952,"die"); ht.Add(-18783,"ding"); ht.Add(-18774,"diu");
92
ht.Add(-18773,"dong"); ht.Add(-18763,"dou"); ht.Add(-18756,"du");
93
ht.Add(-18741,"duan"); ht.Add(-18735,"dui"); ht.Add(-18731,"dun");
94
ht.Add(-18722,"duo"); ht.Add(-18710,"e"); ht.Add(-18697,"en");
95
ht.Add(-18696,"er"); ht.Add(-18526,"fa"); ht.Add(-18518,"fan");
96
ht.Add(-18501,"fang"); ht.Add(-18490,"fei"); ht.Add(-18478,"fen");
97
ht.Add(-18463,"feng"); ht.Add(-18448,"fo"); ht.Add(-18447,"fou");
98
ht.Add(-18446,"fu"); ht.Add(-18239,"ga"); ht.Add(-18237,"gai");
99
ht.Add(-18231,"gan"); ht.Add(-18220,"gang"); ht.Add(-18211,"gao");
100
ht.Add(-18201,"ge"); ht.Add(-18184,"gei"); ht.Add(-18183,"gen");
101
ht.Add(-18181,"geng"); ht.Add(-18012,"gong"); ht.Add(-17997,"gou");
102
ht.Add(-17988,"gu"); ht.Add(-17970,"gua"); ht.Add(-17964,"guai");
103
ht.Add(-17961,"guan"); ht.Add(-17950,"guang"); ht.Add(-17947,"gui");
104
ht.Add(-17931,"gun"); ht.Add(-17928,"guo"); ht.Add(-17922,"ha");
105
ht.Add(-17759,"hai"); ht.Add(-17752,"han"); ht.Add(-17733,"hang");
106
ht.Add(-17730,"hao"); ht.Add(-17721,"he"); ht.Add(-17703,"hei");
107
ht.Add(-17701,"hen"); ht.Add(-17697,"heng"); ht.Add(-17692,"hong");
108
ht.Add(-17683,"hou"); ht.Add(-17676,"hu"); ht.Add(-17496,"hua");
109
ht.Add(-17487,"huai"); ht.Add(-17482,"huan"); ht.Add(-17468,"huang");
110
ht.Add(-17454,"hui"); ht.Add(-17433,"hun"); ht.Add(-17427,"huo");
111
ht.Add(-17417,"ji"); ht.Add(-17202,"jia"); ht.Add(-17185,"jian");
112
ht.Add(-16983,"jiang"); ht.Add(-16970,"jiao"); ht.Add(-16942,"jie");
113
ht.Add(-16915,"jin"); ht.Add(-16733,"jing"); ht.Add(-16708,"jiong");
114
ht.Add(-16706,"jiu"); ht.Add(-16689,"ju"); ht.Add(-16664,"juan");
115
ht.Add(-16657,"jue"); ht.Add(-16647,"jun"); ht.Add(-16474,"ka");
116
ht.Add(-16470,"kai"); ht.Add(-16465,"kan"); ht.Add(-16459,"kang");
117
ht.Add(-16452,"kao"); ht.Add(-16448,"ke"); ht.Add(-16433,"ken");
118
ht.Add(-16429,"keng"); ht.Add(-16427,"kong"); ht.Add(-16423,"kou");
119
ht.Add(-16419,"ku"); ht.Add(-16412,"kua"); ht.Add(-16407,"kuai");
120
ht.Add(-16403,"kuan"); ht.Add(-16401,"kuang"); ht.Add(-16393,"kui");
121
ht.Add(-16220,"kun"); ht.Add(-16216,"kuo"); ht.Add(-16212,"la");
122
ht.Add(-16205,"lai"); ht.Add(-16202,"lan"); ht.Add(-16187,"lang");
123
ht.Add(-16180,"lao"); ht.Add(-16171,"le"); ht.Add(-16169,"lei");
124
ht.Add(-16158,"leng"); ht.Add(-16155,"li"); ht.Add(-15959,"lia");
125
ht.Add(-15958,"lian"); ht.Add(-15944,"liang"); ht.Add(-15933,"liao");
126
ht.Add(-15920,"lie"); ht.Add(-15915,"lin"); ht.Add(-15903,"ling");
127
ht.Add(-15889,"liu"); ht.Add(-15878,"long"); ht.Add(-15707,"lou");
128
ht.Add(-15701,"lu");ht.Add(-15681,"lv");ht.Add(-15667,"luan");
129
ht.Add(-15661,"lue");ht.Add(-15659,"lun");ht.Add(-15652,"luo");
130
ht.Add(-15640,"ma");ht.Add(-15631,"mai");ht.Add(-15625,"man");
131
ht.Add(-15454,"mang");ht.Add(-15448,"mao");ht.Add(-15436,"me");
132
ht.Add(-15435,"mei");ht.Add(-15419,"men");ht.Add(-15416,"meng");
133
ht.Add(-15408,"mi");ht.Add(-15394,"mian");ht.Add(-15385,"miao");
134
ht.Add(-15377,"mie");ht.Add(-15375,"min");ht.Add(-15369,"ming");
135
ht.Add(-15363,"miu");ht.Add(-15362,"mo");ht.Add(-15183,"mou");
136
ht.Add(-15180,"mu");ht.Add(-15165,"na");ht.Add(-15158,"nai");
137
ht.Add(-15153,"nan");ht.Add(-15150,"nang");ht.Add(-15149,"nao");
138
ht.Add(-15144,"ne");ht.Add(-15143,"nei");ht.Add(-15141,"nen");
139
ht.Add(-15140,"neng");ht.Add(-15139,"ni");ht.Add(-15128,"nian");
140
ht.Add(-15121,"niang");ht.Add(-15119,"niao");ht.Add(-15117,"nie");
141
ht.Add(-15110,"nin");ht.Add(-15109,"ning");ht.Add(-14941,"niu");
142
ht.Add(-14937,"nong");ht.Add(-14933,"nu");ht.Add(-14930,"nv");
143
ht.Add(-14929,"nuan");ht.Add(-14928,"nue");ht.Add(-14926,"nuo");
144
ht.Add(-14922,"o");ht.Add(-14921,"ou");ht.Add(-14914,"pa");
145
ht.Add(-14908,"pai");ht.Add(-14902,"pan");ht.Add(-14894,"pang");
146
ht.Add(-14889,"pao");ht.Add(-14882,"pei");ht.Add(-14873,"pen");
147
ht.Add(-14871,"peng");ht.Add(-14857,"pi");ht.Add(-14678,"pian");
148
ht.Add(-14674,"piao");ht.Add(-14670,"pie");ht.Add(-14668,"pin");
149
ht.Add(-14663,"ping");ht.Add(-14654,"po");ht.Add(-14645,"pu");
150
ht.Add(-14630,"qi");ht.Add(-14594,"qia");ht.Add(-14429,"qian");
151
ht.Add(-14407,"qiang");ht.Add(-14399,"qiao");ht.Add(-14384,"qie");
152
ht.Add(-14379,"qin");ht.Add(-14368,"qing");ht.Add(-14355,"qiong");
153
ht.Add(-14353,"qiu");ht.Add(-14345,"qu");ht.Add(-14170,"quan");
154
ht.Add(-14159,"que");ht.Add(-14151,"qun");ht.Add(-14149,"ran");
155
ht.Add(-14145,"rang");ht.Add(-14140,"rao");ht.Add(-14137,"re");
156
ht.Add(-14135,"ren");ht.Add(-14125,"reng");ht.Add(-14123,"ri");
157
ht.Add(-14122,"rong");ht.Add(-14112,"rou");ht.Add(-14109,"ru");
158
ht.Add(-14099,"ruan");ht.Add(-14097,"rui");ht.Add(-14094,"run");
159
ht.Add(-14092,"ruo");ht.Add(-14090,"sa");ht.Add(-14087,"sai");
160
ht.Add(-14083,"san");ht.Add(-13917,"sang");ht.Add(-13914,"sao");
161
ht.Add(-13910,"se");ht.Add(-13907,"sen");ht.Add(-13906,"seng");
162
ht.Add(-13905,"sha");ht.Add(-13896,"shai");ht.Add(-13894,"shan");
163
ht.Add(-13878,"shang");ht.Add(-13870,"shao");ht.Add(-13859,"she");
164
ht.Add(-13847,"shen");ht.Add(-13831,"sheng");ht.Add(-13658,"shi");
165
ht.Add(-13611,"shou");ht.Add(-13601,"shu");ht.Add(-13406,"shua");
166
ht.Add(-13404,"shuai");ht.Add(-13400,"shuan");ht.Add(-13398,"shuang");
167
ht.Add(-13395,"shui");ht.Add(-13391,"shun");ht.Add(-13387,"shuo");
168
ht.Add(-13383,"si");ht.Add(-13367,"song");ht.Add(-13359,"sou");
169
ht.Add(-13356,"su");ht.Add(-13343,"suan");ht.Add(-13340,"sui");
170
ht.Add(-13329,"sun");ht.Add(-13326,"suo");ht.Add(-13318,"ta");
171
ht.Add(-13147,"tai");ht.Add(-13138,"tan");ht.Add(-13120,"tang");
172
ht.Add(-13107,"tao");ht.Add(-13096,"te");ht.Add(-13095,"teng");
173
ht.Add(-13091,"ti");ht.Add(-13076,"tian");ht.Add(-13068,"tiao");
174
ht.Add(-13063,"tie");ht.Add(-13060,"ting");ht.Add(-12888,"tong");
175
ht.Add(-12875,"tou");ht.Add(-12871,"tu");ht.Add(-12860,"tuan");
176
ht.Add(-12858,"tui");ht.Add(-12852,"tun");ht.Add(-12849,"tuo");
177
ht.Add(-12838,"wa");ht.Add(-12831,"wai");ht.Add(-12829,"wan");
178
ht.Add(-12812,"wang");ht.Add(-12802,"wei");ht.Add(-12607,"wen");
179
ht.Add(-12597,"weng");ht.Add(-12594,"wo");ht.Add(-12585,"wu");
180
ht.Add(-12556,"xi");ht.Add(-12359,"xia");ht.Add(-12346,"xian");
181
ht.Add(-12320,"xiang");ht.Add(-12300,"xiao");ht.Add(-12120,"xie");
182
ht.Add(-12099,"xin");ht.Add(-12089,"xing");ht.Add(-12074,"xiong");
183
ht.Add(-12067,"xiu");ht.Add(-12058,"xu");ht.Add(-12039,"xuan");
184
ht.Add(-11867,"xue");ht.Add(-11861,"xun");ht.Add(-11847,"ya");
185
ht.Add(-11831,"yan");ht.Add(-11798,"yang");ht.Add(-11781,"yao");
186
ht.Add(-11604,"ye");ht.Add(-11589,"yi");ht.Add(-11536,"yin");
187
ht.Add(-11358,"ying");ht.Add(-11340,"yo");ht.Add(-11339,"yong");
188
ht.Add(-11324,"you");ht.Add(-11303,"yu");ht.Add(-11097,"yuan");
189
ht.Add(-11077,"yue");ht.Add(-11067,"yun");ht.Add(-11055,"za");
190
ht.Add(-11052,"zai");ht.Add(-11045,"zan");ht.Add(-11041,"zang");
191
ht.Add(-11038,"zao");ht.Add(-11024,"ze");ht.Add(-11020,"zei");
192
ht.Add(-11019,"zen");ht.Add(-11018,"zeng");ht.Add(-11014,"zha");
193
ht.Add(-10838,"zhai");ht.Add(-10832,"zhan");ht.Add(-10815,"zhang");
194
ht.Add(-10800,"zhao");ht.Add(-10790,"zhe");ht.Add(-10780,"zhen");
195
ht.Add(-10764,"zheng");ht.Add(-10587,"zhi");ht.Add(-10544,"zhong");
196
ht.Add(-10533,"zhou");ht.Add(-10519,"zhu");ht.Add(-10331,"zhua");
197
ht.Add(-10329,"zhuai");ht.Add(-10328,"zhuan");ht.Add(-10322,"zhuang");
198
ht.Add(-10315,"zhui");ht.Add(-10309,"zhun");ht.Add(-10307,"zhuo");
199
ht.Add(-10296,"zi");ht.Add(-10281,"zong");ht.Add(-10274,"zou");
200
ht.Add(-10270,"zu");ht.Add(-10262,"zuan");ht.Add(-10260,"zui");
201
ht.Add(-10256,"zun");ht.Add(-10254,"zuo");ht.Add(-10247,"zz");
202
return ht;
203
}
204
205
}
206
# endregion
207
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
本文转自
http://www.cnblogs.com/junjie/archive/2005/09/08/232525.html
1万+

被折叠的 条评论
为什么被折叠?



