`

[转]as3版汉字转拼音(含优化版及扩充版)

阅读更多
http://www.4w5w.com/blog/post/11.html

最近工作需要,到网上搜索as3汉字转拼音的方法,绝大多数都是一个叫大盗二十八的兄弟写的版本。看了下代码,能实现基本功能,但也存在一些问题。代码可以参见:http://www.blueidea.com/tech/multimedia/2008/6042.asp

首先,转码使用了两个巨大的数组,这样增大了程序的体积,也限制了字符的扩充。其实使用ByteArray可以实现转码功能。第二,该版本所含文字太少,姓名中常用的字都无法翻译,比如“琦”之类的,影响了使用效果。

自力更生,参照此兄的代码,先改了一个优化版,字数和原字数相同,但不需要那两个对应的数组,程序体积只有原程序的十分之一,效率也大大提升。

但由于字数太少,这个版本也不怎么实用,后来又做了一个扩充版,将字数增加了几十倍,绝大多数的汉字都可以翻译了。然后压缩了一下字典,总体的体积也不大。下载地址扩充版下载 里面用到json和Base64的类,如果没有可以到网络上下载。

下面是优化版的代码:


package util
{
	import flash.utils.ByteArray;
	
	/**
	 * 拼音相关工具类
	 * @author Eric Lin
	 * 
	 */
	public class PinYinUtil
	{
		private static const spell:Object = {0xB0A1:"a", 0xB0A3:"ai", 0xB0B0:"an", 0xB0B9:"ang", 0xB0BC:"ao", 0xB0C5:"ba", 0xB0D7:"bai", 0xB0DF:"ban", 0xB0EE:"bang", 0xB0FA:"bao", 0xB1AD:"bei", 0xB1BC:"ben", 0xB1C0:"beng", 0xB1C6:"bi", 0xB1DE:"bian", 0xB1EA:"biao", 0xB1EE:"bie", 0xB1F2:"bin", 0xB1F8:"bing", 0xB2A3:"bo", 0xB2B8:"bu", 0xB2C1:"ca", 0xB2C2:"cai", 0xB2CD:"can", 0xB2D4:"cang", 0xB2D9:"cao", 0xB2DE:"ce", 0xB2E3:"ceng", 0xB2E5:"cha", 0xB2F0:"chai", 0xB2F3:"chan", 0xB2FD:"chang", 0xB3AC:"chao", 0xB3B5:"che", 0xB3BB:"chen", 0xB3C5:"cheng", 0xB3D4:"chi", 0xB3E4:"chong", 0xB3E9:"chou", 0xB3F5:"chu", 0xB4A7:"chuai", 0xB4A8:"chuan", 0xB4AF:"chuang", 0xB4B5:"chui", 0xB4BA:"chun", 0xB4C1:"chuo", 0xB4C3:"ci", 0xB4CF:"cong", 0xB4D5:"cou", 0xB4D6:"cu", 0xB4DA:"cuan", 0xB4DD:"cui", 0xB4E5:"cun", 0xB4E8:"cuo", 0xB4EE:"da", 0xB4F4:"dai", 0xB5A2:"dan", 0xB5B1:"dang", 0xB5B6:"dao", 0xB5C2:"de", 0xB5C5:"deng", 0xB5CC:"di", 0xB5DF:"dian", 0xB5EF:"diao", 0xB5F8:"die", 0xB6A1:"ding", 0xB6AA:"diu", 0xB6AB:"dong", 0xB6B5:"dou", 0xB6BC:"du", 0xB6CB:"duan", 0xB6D1:"dui", 0xB6D5:"dun", 0xB6DE:"duo", 0xB6EA:"e", 0xB6F7:"en", 0xB6F8:"er", 0xB7A2:"fa", 0xB7AA:"fan", 0xB7BB:"fang", 0xB7C6:"fei", 0xB7D2:"fen", 0xB7E1:"feng", 0xB7F0:"fo", 0xB7F1:"fou", 0xB7F2:"fu", 0xB8C1:"ga", 0xB8C3:"gai", 0xB8C9:"gan", 0xB8D4:"gang", 0xB8DD:"gao", 0xB8E7:"ge", 0xB8F8:"gei", 0xB8F9:"gen", 0xB8FB:"geng", 0xB9A4:"gong", 0xB9B3:"gou", 0xB9BC:"gu", 0xB9CE:"gua", 0xB9D4:"guai", 0xB9D7:"guan", 0xB9E2:"guang", 0xB9E5:"gui", 0xB9F5:"gun", 0xB9F8:"guo", 0xB9FE:"ha", 0xBAA1:"hai", 0xBAA8:"han", 0xBABB:"hang", 0xBABE:"hao", 0xBAC7:"he", 0xBAD9:"hei", 0xBADB:"hen", 0xBADF:"heng", 0xBAE4:"hong", 0xBAED:"hou", 0xBAF4:"hu", 0xBBA8:"hua", 0xBBB1:"huai", 0xBBB6:"huan", 0xBBC4:"huang", 0xBBD2:"hui", 0xBBE7:"hun", 0xBBED:"huo", 0xBBF7:"ji", 0xBCCE:"jia", 0xBCDF:"jian", 0xBDA9:"jiang", 0xBDB6:"jiao", 0xBDD2:"jie", 0xBDED:"jin", 0xBEA3:"jing", 0xBEBC:"jiong", 0xBEBE:"jiu", 0xBECF:"ju", 0xBEE8:"juan", 0xBEEF:"jue", 0xBEF9:"jun", 0xBFA6:"ka", 0xBFAA:"kai", 0xBFAF:"kan", 0xBFB5:"kang", 0xBFBC:"kao", 0xBFC0:"ke", 0xBFCF:"ken", 0xBFD3:"keng", 0xBFD5:"kong", 0xBFD9:"kou", 0xBFDD:"ku", 0xBFE4:"kua", 0xBFE9:"kuai", 0xBFED:"kuan", 0xBFEF:"kuang", 0xBFF7:"kui", 0xC0A4:"kun", 0xC0A8:"kuo", 0xC0AC:"la", 0xC0B3:"lai", 0xC0B6:"lan", 0xC0C5:"lang", 0xC0CC:"lao", 0xC0D5:"le", 0xC0D7:"lei", 0xC0E2:"leng", 0xC0E5:"li", 0xC1A9:"lia", 0xC1AA:"lian", 0xC1B8:"liang", 0xC1C3:"liao", 0xC1D0:"lie", 0xC1D5:"lin", 0xC1E1:"ling", 0xC1EF:"liu", 0xC1FA:"long", 0xC2A5:"lou", 0xC2AB:"lu", 0xC2BF:"lv", 0xC2CD:"luan", 0xC2D3:"lue", 0xC2D5:"lun", 0xC2DC:"luo", 0xC2E8:"ma", 0xC2F1:"mai", 0xC2F7:"man", 0xC3A2:"mang", 0xC3A8:"mao", 0xC3B4:"me", 0xC3B5:"mei", 0xC3C5:"men", 0xC3C8:"meng", 0xC3D0:"mi", 0xC3DE:"mian", 0xC3E7:"miao", 0xC3EF:"mie", 0xC3F1:"min", 0xC3F7:"ming", 0xC3FD:"miu", 0xC3FE:"mo", 0xC4B1:"mou", 0xC4B4:"mu", 0xC4C3:"na", 0xC4CA:"nai", 0xC4CF:"nan", 0xC4D2:"nang", 0xC4D3:"nao", 0xC4D8:"ne", 0xC4D9:"nei", 0xC4DB:"nen", 0xC4DC:"neng", 0xC4DD:"ni", 0xC4E8:"nian", 0xC4EF:"niang", 0xC4F1:"niao", 0xC4F3:"nie", 0xC4FA:"nin", 0xC4FB:"ning", 0xC5A3:"niu", 0xC5A7:"nong", 0xC5AB:"nu", 0xC5AE:"nv", 0xC5AF:"nuan", 0xC5B0:"nue", 0xC5B2:"nuo", 0xC5B6:"o", 0xC5B7:"ou", 0xC5BE:"pa", 0xC5C4:"pai", 0xC5CA:"pan", 0xC5D2:"pang", 0xC5D7:"pao", 0xC5DE:"pei", 0xC5E7:"pen", 0xC5E9:"peng", 0xC5F7:"pi", 0xC6AA:"pian", 0xC6AE:"piao", 0xC6B2:"pie", 0xC6B4:"pin", 0xC6B9:"ping", 0xC6C2:"po", 0xC6CB:"pu", 0xC6DA:"qi", 0xC6FE:"qia", 0xC7A3:"qian", 0xC7B9:"qiang", 0xC7C1:"qiao", 0xC7D0:"qie", 0xC7D5:"qin", 0xC7E0:"qing", 0xC7ED:"qiong", 0xC7EF:"qiu", 0xC7F7:"qu", 0xC8A6:"quan", 0xC8B1:"que", 0xC8B9:"qun", 0xC8BB:"ran", 0xC8BF:"rang", 0xC8C4:"rao", 0xC8C7:"re", 0xC8C9:"ren", 0xC8D3:"reng", 0xC8D5:"ri", 0xC8D6:"rong", 0xC8E0:"rou", 0xC8E3:"ru", 0xC8ED:"ruan", 0xC8EF:"rui", 0xC8F2:"run", 0xC8F4:"ruo", 0xC8F6:"sa", 0xC8F9:"sai", 0xC8FD:"san", 0xC9A3:"sang", 0xC9A6:"sao", 0xC9AA:"se", 0xC9AD:"sen", 0xC9AE:"seng", 0xC9AF:"sha", 0xC9B8:"shai", 0xC9BA:"shan", 0xC9CA:"shang", 0xC9D2:"shao", 0xC9DD:"she", 0xC9E9:"shen", 0xC9F9:"sheng", 0xCAA6:"shi", 0xCAD5:"shou", 0xCADF:"shu", 0xCBA2:"shua", 0xCBA4:"shuai", 0xCBA8:"shuan", 0xCBAA:"shuang", 0xCBAD:"shui", 0xCBB1:"shun", 0xCBB5:"shuo", 0xCBB9:"si", 0xCBC9:"song", 0xCBD1:"sou", 0xCBD4:"su", 0xCBE1:"suan", 0xCBE4:"sui", 0xCBEF:"sun", 0xCBF2:"suo", 0xCBFA:"ta", 0xCCA5:"tai", 0xCCAE:"tan", 0xCCC0:"tang", 0xCCCD:"tao", 0xCCD8:"te", 0xCCD9:"teng", 0xCCDD:"ti", 0xCCEC:"tian", 0xCCF4:"tiao", 0xCCF9:"tie", 0xCCFC:"ting", 0xCDA8:"tong", 0xCDB5:"tou", 0xCDB9:"tu", 0xCDC4:"tuan", 0xCDC6:"tui", 0xCDCC:"tun", 0xCDCF:"tuo", 0xCDDA:"wa", 0xCDE1:"wai", 0xCDE3:"wan", 0xCDF4:"wang", 0xCDFE:"wei", 0xCEC1:"wen", 0xCECB:"weng", 0xCECE:"wo", 0xCED7:"wu", 0xCEF4:"xi", 0xCFB9:"xia", 0xCFC6:"xian", 0xCFE0:"xiang", 0xCFF4:"xiao", 0xD0A8:"xie", 0xD0BD:"xin", 0xD0C7:"xing", 0xD0D6:"xiong", 0xD0DD:"xiu", 0xD0E6:"xu", 0xD0F9:"xuan", 0xD1A5:"xue", 0xD1AB:"xun", 0xD1B9:"ya", 0xD1C9:"yan", 0xD1EA:"yang", 0xD1FB:"yao", 0xD2AC:"ye", 0xD2BB:"yi", 0xD2F0:"yin", 0xD3A2:"ying", 0xD3B4:"yo", 0xD3B5:"yong", 0xD3C4:"you", 0xD3D9:"yu", 0xD4A7:"yuan", 0xD4BB:"yue", 0xD4C5:"yun", 0xD4D1:"za", 0xD4D4:"zai", 0xD4DB:"zan", 0xD4DF:"zang", 0xD4E2:"zao", 0xD4F0:"ze", 0xD4F4:"zei", 0xD4F5:"zen", 0xD4F6:"zeng", 0xD4FA:"zha", 0xD5AA:"zhai", 0xD5B0:"zhan", 0xD5C1:"zhang", 0xD5D0:"zhao", 0xD5DA:"zhe", 0xD5E4:"zhen", 0xD5F4:"zheng", 0xD6A5:"zhi", 0xD6D0:"zhong", 0xD6DB:"zhou", 0xD6E9:"zhu", 0xD7A5:"zhua", 0xD7A7:"zhuai", 0xD7A8:"zhuan", 0xD7AE:"zhuang", 0xD7B5:"zhui", 0xD7BB:"zhun", 0xD7BD:"zhuo", 0xD7C8:"zi", 0xD7D7:"zong", 0xD7DE:"zou", 0xD7E2:"zu", 0xD7EA:"zuan", 0xD7EC:"zui", 0xD7F0:"zun", 0xD7F2:"zuo"};
		
		/**
		 * 将中文字符转为拼音
		 * @param str 原字符串
		 * @param abbreviative 是否转为缩写拼音,只提取拼音首字母
		 * @param addSpace 是否在中文字间加空格
		 * @param filterOther 是否过滤非中文字符
		 * @return 转换好的字符串
		 * 
		 */
		public static function toPinyin(str:String, abbreviative:Boolean=false, addSpace:Boolean=false, filterOther:Boolean=false):String{
			if (str && str!=null && str!="") {
				var result:String = "";
				var pStr:String;
				var linkPY:Boolean = false;
				
				var length:int = str.length;
				for (var ii:int=0; ii<length; ii++)="" {<br="">					pStr = pinyin(str.charAt(ii));
					if (pStr == null){
						if (!filterOther){
							result = result + str.charAt(ii);
							linkPY = false;
						}
					}else{
						if(abbreviative){
							result = result + pStr.substr(0,1).toUpperCase();
						}else{
							result = result + (linkPY&&addSpace?" ":"") + pStr;
							linkPY = true;
						}
					}
				}
				return result;
			}else{
				return "";
			}
		}
		
		private static function pinyin(char:String):String {
			if (!char.charCodeAt(0) || char.charCodeAt(0) < 128) {
				return null;
			}
			var ascCode:int = unicodeToAnsi(char);
			if (!(ascCode > 0xB0A0 && ascCode<0xD7FC)) {
				return null;
			}
			for (var ii:int=ascCode; (!spell[ii] && ii>0); ) {
				ii--;
			}
			return spell[ii];
		}
		
		private static function unicodeToAnsi(str:String):int{
			var byte:ByteArray =new ByteArray();
			byte.writeMultiByte(str,"gbk");
			byte.position = 0;
			if (byte.length>1){
				return byte.readUnsignedShort();
			}else{
				return byte.readUnsignedByte();
			}
		}
		
	}
}
</length;>
分享到:
评论

相关推荐

    中文版汉字转汉语拼音

    这个“中文版汉字转汉语拼音”项目显然提供了这样的功能,它可能是一个JavaScript库,通过分析给定的文件`wordspell.js`来实现汉字到拼音的转换。 在JavaScript中,实现汉字转拼音的功能通常涉及到以下几个关键知识...

    flex 汉字转拼音

    这个"flex汉字转拼音"的主题涉及到Flex应用中处理中文字符并转换为拼音的能力,这对于开发涉及中文语音识别、搜索优化或者用户友好界面等功能的应用程序来说非常有用。 在Flex中,处理汉字转拼音通常需要利用特定的...

    sqlserver汉字转拼音(绝对的经典直接创建可用)

    ### SQL Server 汉字转拼音功能介绍 #### 标题与描述解读 标题和描述均表明了这是一个关于SQL Server中实现汉字到拼音转换的解决方案。该解决方案被描述为“绝对的经典”,意味着它可能是一种广泛认可且效果良好的...

    ORACLE汉字转拼音

    "ORACLE汉字转拼音"这个主题就聚焦于如何在Oracle数据库中实现这一功能。以下是对这个知识点的详细阐述: 1. **Oracle中的函数编程**: Oracle数据库支持PL/SQL,它是一种过程化语言,允许我们创建自定义函数来...

    oracle汉字转拼音

    在处理包含中文字符的数据时,有时我们需要将汉字转换为对应的拼音。在Oracle数据库中,由于其强大的文本处理能力,可以通过编写自定义函数来实现这一功能。本文提供的两个示例分别是针对GBK编码和UTF-8编码的解决...

    如何在excel中把汉字转换成拼音

    - 由于汉字与拼音之间的映射关系较为复杂,建议在实际使用过程中不断优化和完善代码。 #### 五、总结 通过上述步骤,您可以在Excel中轻松实现将汉字转换为拼音的功能。这种方法不仅高效便捷,而且可以根据实际需要...

    汉字转全拼或首字母Oracle存储过程

    在Oracle数据库环境中,有时我们需要对汉字进行处理,例如将其转换为全拼或首字母,以进行数据检索、索引优化等操作。在这种情况下,可以利用PL/SQL编写存储过程来实现这一功能。"汉字转全拼或首字母Oracle存储过程...

    actionscript汉字转化为拼音

    在实际应用中,这种汉字转拼音的功能可能应用于各种场景,如搜索引擎优化(SEO),语音合成,或者为非中文用户显示汉字的发音等。理解和掌握这些知识点对于开发相关的AS3项目至关重要。通过深入研究提供的源代码和...

    VB拼音查询

    在VB(Visual Basic)编程环境中,我们可以利用API函数或者第三方库来实现汉字的拼音查询功能。这个"VB拼音查询"项目可能就是通过这样的方式来帮助用户查找汉字对应的拼音。下面将详细阐述如何在VB中实现汉字拼音...

    取汉字拼音或首字母的PL/SQL存储过程

    总的来说,通过PL/SQL的存储过程,我们可以有效地在Oracle数据库中处理汉字转拼音的需求,这在中文信息处理、索引或搜索等场景中非常有用。不过,需要注意的是,由于Oracle的内置函数限制,这种方法可能无法处理所有...

    VB编程中如何获得汉字的拼音简码

    在VB编程中,获取汉字的拼音简码是一项实用的技术,特别是在需要进行汉字检索或数据录入优化的场景下。汉字拼音简码通常是根据汉字的机内码来生成的,这是一种节省存储空间并提高检索效率的方法。以下我们将详细讲解...

    javascript 汉字转拼音实现代码

    这一功能在中文输入法、语言学习软件以及各种需要处理中文拼音的场景中都有广泛应用。 在实现汉字转拼音的功能时,我们可以利用现成的JavaScript库或者编写一些算法来实现。由于给定文件的内容较为简短,并没有提供...

    vb获取汉字全拼

    在VB(Visual Basic)编程环境中,获取汉字全拼是一项实用的功能,它可以帮助用户处理与汉字拼音相关的任务,例如输入法的实现、汉字教学或者数据分析。本文将深入探讨如何在VB中实现这一功能,并提供相关代码示例。...

    iphone 获取汉字首字母代码

    以上就是“iPhone获取汉字首字母代码”的核心知识点,开发者可以根据具体需求,结合这些信息来实现自己的汉字转拼音首字母的功能。在实际开发中,要记得灵活运用,并根据项目需求进行适当的调整和优化。

    双拼练习1.2--狂风寞寞制作

    描述中的“flash as3”揭示了该应用程序是使用Adobe Flash平台的ActionScript 3(AS3)编程语言开发的。AS3是Flash开发中的强大脚本语言,提供了面向对象的编程能力,用于创建交互式的网页内容、游戏以及像这种双拼...

    C#开发实战

    #### 一、为程序设置版本及帮助信息 在C#开发过程中,为程序设置版本信息是非常重要的一个步骤,它可以帮助开发者更好地管理项目的不同版本,并且便于用户了解软件的具体信息。这通常通过编辑项目中的`AssemblyInfo...

    E-Lyric易歌词

    并可调整时间标签,简繁体中文转换,清除广告(歌词替换),去除空格,修正格式错误,修正时间标签错误、添加汉语拼音、单句分割、多句合并等等35种附加处理功能! 支持ANSI/USC2/Unicode/UTF-8等编码转换。甚至...

    msods5.8 u盘上的dos

    4.全中文的操作方式,让您使用时更简单,并且支持DOS下五笔拼音输入及中文文件操作. 5.完全傻瓜化的网刻模式,让没用过本软件的用户也能轻松实现网刻. 6.支持引导自已制作IMG镜像,而且理论上支持引导自己制作的无限...

    MaxDOS & Ghost8.2 7 For Vista/2008

    4. 全中文的操作方式,让您使用时更简单,支持DOS下显示中文及五笔拼音输入. 5. 完全傻瓜化的网刻模式,让没用过本软件的用户也能轻松实现网刻. 6. 支持引导自已制作IMG镜像,并且支持引导自己制作的无限大小IMG镜像. ...

Global site tag (gtag.js) - Google Analytics