`

JS实现把汉字转换为拼音

 
阅读更多

  用人在知道里面提问,如何用javascript程序把汉字转换为拼音的首字母,帖子地址是:http://zhidao.baidu.com/question/41377061.html

  我分析一下以后,写了下面的把汉字转换为拼音的程序,但是帖子只要拼音的首字母,所以那里只贴了一个更简单化的版本。

  程序原理很简单,网上可以找到汉字拼音的数据字典,但是由于大家都知道GB2312编码里面汉字是按拼音排序的,只要知道各个拼音为首的汉字代码,就可以计算所有汉字的拼音代码了。

  程序有一个关键,就是Javascript对汉字是自动使用unicode编码,为了获取起GB2312的ASCII编码值,我使用了VBSCRIPT来写了两个函数,在JAVASCRIPT程序里面调用VBSCRIPT的函数实现代码转换。

  完整程序如下(把以下代码保存为一个html文件用IE打开,在汉字栏里面输入内容,光标离开的时候拼音栏就会显示相应的拼音):

<script language=vbscript>
function vbChr(c)
vbChr = chr(c)
end function

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

<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;
}
</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>

分享到:
评论
2 楼 Jefurry 2015-01-13  
额,貌似是跟65536相减
1 楼 Jefurry 2015-01-13  
请教一下,py1数组元素中的数字是如何算出来的?
var py1=new Array(20319,
20317,
20304,
20295,
20292, ...);


谢谢~

相关推荐

    javascript汉字转换成拼音

    ### JavaScript汉字转换成拼音:深度解析与实现 在IT领域,特别是前端开发中,文本处理是常见需求之一,其中将汉字转换为拼音的功能在多种场景下尤为重要,如语音输入、文字搜索优化、国际化应用等。本文将深入探讨...

    JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    首先,要实现这些功能,我们需要一个能将汉字转换为拼音的JavaScript插件。在提供的示例中,使用了一个名为`ChinesePY.js`的插件,这个插件可以从指定的链接下载。通过引入这个插件,我们可以调用其提供的方法来获取...

    将汉字转换为拼音码的js插件

    "将汉字转换为拼音码的js插件"就是针对这种需求而设计的一种工具,它能够方便地帮助开发者快速实现汉字到拼音的转换。 这个js插件的核心功能是将汉字转换为对应的拼音码,通常包括声母、韵母以及声调等信息。在...

    输入汉字转换成拼音首字母js代码.zip

    本文将深入探讨标题和描述中提及的知识点——利用JavaScript实现输入汉字转换为拼音首字母的功能。这一技术常用于搜索关键词匹配、数据分析以及中文输入法的便捷输入等方面。 首先,我们需要了解的是JavaScript的...

    jQuery中文转换成拼音代码

    总的来说,jQuery中文转换成拼音的代码是一个结合了JavaScript、jQuery和中文字符处理技术的实用工具。通过这个功能,开发者可以更好地处理中文数据,提高用户体验,特别是在需要对中文内容进行非人工处理的场景下。

    js把汉字转换成拼音码

    这是一个能把你输入的汉字转换成拼音简码的JavaScript工具

    汉字转换为拼音,取汉字的拼音首字母

    在IT领域,尤其是在文本处理和自然语言处理中,汉字转换为拼音是一项重要的基础工作。这是因为计算机和编程语言大多基于拉丁字母,而汉字是中文特有的字符系统。为了方便计算机处理汉字,我们需要将汉字转换为其对应...

    ry实现汉字转换成拼音代码.rar_fortyhhy_molecularc1b_ry实现汉字转换成拼音代码

    "ry实现汉字转换成拼音代码"是针对这一需求开发的一个插件,它能够将汉字转换为对应的拼音表示,方便计算机进一步处理。下面我们将深入探讨这个主题。 首先,汉字转换成拼音的基础是汉字与拼音的映射关系。每个汉字...

    JavaScript中文转拼音,JS中文转拼音插件,中文转拼音(JavaScript)

    描述中提到,这个压缩包内包含了一个已经开发和测试完成的JS中文转拼音插件,文件包括"pyClass.js"和"zhuanPY.js",可能是一个完整的库或模块,用于实现中文到拼音的转换功能。"说明.txt"文件应该包含了使用该插件的...

    把汉字转换成拼音

    在IT领域,将汉字转换为拼音是一项常见的任务,特别是在自然语言处理、文本分析以及中文输入法等场景中。本文将深入探讨如何实现这一过程,并基于提供的标签“源码”和“工具”分享相关的编程实现。 首先,我们需要...

    汉字转换为拼音

    2. `hz.js` - 这可能是一个JavaScript库,实现了汉字转拼音的功能。JavaScript是Web开发中常用的语言,所以这个库可能可以直接在网页中引入,帮助开发者快速实现汉字到拼音的转换。 汉字转拼音的实现方式有多种,...

    js 如何将汉字转换成拼音

    在JavaScript中,将汉字转换为拼音是一项常见的任务,特别是在处理用户输入、搜索优化或语音合成等场景中。这里,我们将探讨两种实现方法。 方法一:使用JavaScript库 JavaScript本身并不直接支持汉字到拼音的转换...

    js,实现中文转换成拼音,会有用得上的地方,

    在JavaScript中,中文转换成拼音是一项常见的需求,特别是在文本处理、语音合成或者搜索引擎优化等场景。这个项目提供了使用JavaScript实现中文到拼音转换的功能。虽然它可能无法覆盖所有的汉字,但可以作为基础工具...

    js汉字转换拼音

    这篇博客“js汉字转换拼音”提供了一个实用的解决方案,结合源码和工具,可以帮助开发者实现这一功能。 首先,我们需要理解汉字与拼音之间的关系。汉字是中文的书写形式,而拼音则是用拉丁字母来表示汉字读音的方式...

    jQuery实现汉字转换成拼音代码.zip

    在给定的“jQuery实现汉字转换成拼音代码.zip”压缩包中,包含了一个基于jQuery的插件——jQuery.Hz2Py.js,这个插件专门用于将汉字转换为对应的拼音。 首先,我们需要理解汉字转拼音的基本原理。在计算机处理汉字...

    jQuery实现汉字转换成拼音

    在jQuery环境下,我们可以选择像pinyin.js这样的库,它提供了将汉字转换为拼音的功能。 1. **引入jQuery和pinyin.js库** 在`index.html`文件中,我们需要引入jQuery和pinyin.js库。通过`&lt;script&gt;`标签将这两个库的...

    js实现拼音、首字母、汉字等模糊搜索.rar

    在JavaScript中实现拼音、首字母和汉字的模糊搜索是一项常见的需求,特别是在开发具有搜索功能的Web应用时。这里我们将深入探讨如何实现这些功能,并通过一个名为"拼音首字母匹配js库"的压缩包文件来理解相关技术。 ...

    js汉字转拼音工具

    JavaScript汉字转拼音工具是一种在前端开发中非常实用的库,尤其在处理中文数据时,例如进行关键词搜索、拼音排序或创建具有拼音功能的应用时。这个工具通过JavaScript编程语言实现了将汉字转换为对应的拼音,提供了...

    JS实现中文转拼音功能

    本文将详细介绍如何使用JavaScript(简称JS)在JSP环境中实现中文到拼音的转换,并深入解析其实现原理。 #### 二、实现原理 要实现中文到拼音的转换,我们需要解决两个主要问题: 1. **获取拼音数据**:中文到...

    JS汉字转拼音,字母大小写转换

    JS汉字转拼音,字母大小写转换,可直接使用的汉字转拼音JS

Global site tag (gtag.js) - Google Analytics