JS_將漢字轉換成漢語拼音JS版

 用人在知道里面提問,如何用javascript程序把漢字轉換爲拼音的首字母,帖子地址是:http://zhidao.baidu.com/question/41377061.htmljavascript

  我分析一下之後,寫了下面的把漢字轉換爲拼音的程序,可是帖子只要拼音的首字母,因此那裏只貼了一個更簡單化的版本。html

  程序原理很簡單,網上能夠找到漢字拼音的數據字典,可是因爲你們都知道GB2312編碼裏面漢字是按拼音排序的,只要知道各個拼音爲首的漢字代碼,就能夠計算全部漢字的拼音代碼了。java

  程序有一個關鍵,就是Javascript對漢字是自動使用unicode編碼,爲了獲取起GB2312的ASCII編碼值,我使用了VBSCRIPT來寫了兩個函數,在JAVASCRIPT程序裏面調用VBSCRIPT的函數實現代碼轉換。函數

  完整程序以下(把如下代碼保存爲一個html文件用IE打開,在漢字欄裏面輸入內容,光標離開的時候拼音欄就會顯示相應的拼音):ui

<mce:script  language="vbscript"><!--
function vbChr(c) 
vbChr = chr(c) 
end function

function vbAsc(n) 
vbAsc = asc(n) 
end function 
// --></mce:script>

<mce:script language=javascript><!--
var py1=new Array(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,
15667,
15661,
15659,
15652,
15681,
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,
14929,
14928,
14926,
14930,
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,0);
var py2=new Array('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',
'luan',
'lue',
'lun',
'luo',
'lv',
'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',
'nuan',
'nue',
'nuo',
'nv',
'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','');
function getPinYin(index){
var i;
if(index==0x1534) return 'yan';
if(index>0x4F5F||index<0x2807) return '';
i=0;while(py1[i]>=index)i++;
return py2[i-1];
}
function pinyin(s){
var i,s2='';
for (i=0;i<s.length;i++)s2+=getPinYin(0-vbAsc(s.charAt(i)));
return s2;
}
// --></mce:script>

 

<form name=frm>
漢字:<input type=text name=s SIZE=120 onchange="javascript:document.frm.p.value=pinyin(this.value);"><BR>
拼音:<input type=text name=p SIZE=120 readonly>
</form>
相關文章
相關標籤/搜索