获得汉字的拼音首字母以及整个拼音

1 SQL Server
  代码:
  获得首字母:
  CREATE function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000) as
BEGIN
  declare @word nchar(1),@PY nvarchar(4000)
  set @PY=''
  while len(@str)>0
  BEGIN
    set @word=left(@str,1)
    set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
    then (
          select top 1 PY
          from
          (
            select 'A' as PY,N'驁' as word
            union all select 'B',N'簿'
            union all select 'C',N'錯'
            union all select 'D',N'鵽'
            union all select 'E',N'樲'
            union all select 'F',N'鰒'
            union all select 'G',N'腂'
            union all select 'H',N'夻'
            union all select 'J',N'攈'
            union all select 'K',N'穒'
            union all select 'L',N'鱳'
            union all select 'M',N'旀'
            union all select 'N',N'桛'
            union all select 'O',N'漚'
            union all select 'P',N'曝'
            union all select 'Q',N'囕'
            union all select 'R',N'鶸'
            union all select 'S',N'蜶'
            union all select 'T',N'籜'
            union all select 'W',N'鶩'
            union all select 'X',N'鑂'
            union all select 'Y',N'韻'
            union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC
)
else @word
end)
  set @str=right(@str,len(@str)-1)
END
return @PY
END
go

获得全部拼音
if exists (select 1 from sysobjects
   where id = object_id('pinyin')
   and type = 'U')
drop table pinyin
go

CREATE TABLE pinyin (py varchar(10) NOT NULL DEFAULT '', code int NOT NULL DEFAULT 0)    
go

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


if exists (select 1
           from sysobjects
           where id = object_id('fun_getPY_Whole'))
   drop Function fun_getPY_Whole
go

create function fun_getPY_Whole(@str varchar(4000))
returns varchar(4000) as
BEGIN
  declare @word varchar(10),@PY varchar(4000)
  DECLARE @v int
  declare @temp varchar(10)
  set @PY=''
  while len(@str)>0
  BEGIN
    set @word=left(@str,1)
      
    if  unicode(@word) between 19968 and 19968+20901
     begin
   
        select @v  = convert(int,substring(convert(varbinary,@word),1,1)) * 256 + convert(int,substring(convert

(varbinary,@word),2,1))-65535
 
        select @temp = MAX(py) FROM pinyin WHERE [code]<@v
   
        set @PY=@PY+@temp
     end    
    else
       set @PY=@PY +  @word

    set @str=right(@str,len(@str)-1)

END
return @PY
END
go

  参考:
http://topic.csdn.net/t/20020705/10/851769.html#
http://www.shouker.com/user4/dna/2008/4/22/121031.html
http://www.sudu.cn/info/html/edu/database/20071226/22305.html

2 c#
       //获得整个拼音
        public string GetSpell(string x)
        {
            int[] iA = new int[]
              {
                   -20319 ,-20317 ,-20304 ,-20295 ,-20292 ,-20283 ,-20265 ,-20257 ,-20242 ,-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
                  };
            string[] sA = 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","hen","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"
          };
            byte[] B = new byte[2];
            string s = "";
            char[] c = x.ToCharArray();
            for (int j = 0; j < c.Length; j++)
            {
                B = System.Text.Encoding.Default.GetBytes(c[j].ToString());
                if ((int)(B[0]) <= 160 && (int)(B[0]) >= 0)
                {
                    s += c[j];
                }
                else
                {
                    for (int i = (iA.Length - 1); i >= 0; i--)
                    {
                        if (iA[i] <= (int)(B[0]) * 256 + (int)(B[1]) - 65536)
                        {
                            s += sA[i];
                            break;
                        }
                    }
                }
            }

            return s;
        }

posted on 2009-01-12 17:51  优雅小猪  阅读(1140)  评论(0编辑  收藏  举报

导航