请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 5092|回复: 13

[AS3] 汉字转拼音 AS3版 [复制链接]

dao28 楼主
帖子
199
体力
367
威望
9
居住地
重庆市 南岸区
发表于 2008-7-29 14:25:44 |显示全部楼层
源问帖:
Flash获取汉字拼音索引
借鉴帖:
用javascript实现Base64编码
汉字转拼音(Js版)

这个问题是tank33cncn提出的,偶搜索了下资料,总结了一下于是得出以下代码,其它就没多做什么了,有需要的请自行优化利用:

  1. //////////////////////////////////////////////////////////////
  2. //汇源者:大盗二十八
  3. //源问帖:http://bbs.blueidea.com/thread-2875104-1-1.html
  4. //借鉴帖: http://www.blueidea.com/tech/web/2006/3622.asp
  5. //借鉴帖: http://www.mzwu.com/article.asp?id=1366
  6. //版权注:欢迎复制传播二次开发!
  7. ///////////////////////////////////////////////////////////////
  8. //在这里复制附件的array.as里面的函数,因为代码太长,帖子帖不了。

  9. var spell = {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"};

  10. var spellArray = new Array();
  11. var pn = "";
  12. function Trim(info) {
  13.         return info.replace(/(^\s*)|(\s*$)/g,"");
  14. }
  15. function isEnKong1(argValue) {
  16.         var flag=false;
  17.         var compStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()_-+=|\{[}]:;'<,>.?/ ";
  18.         var length=argValue.length;
  19.         for (var iIndex=0; iIndex<length; iIndex++) {
  20.                 var temp=compStr.indexOf(argValue.charAt(iIndex));
  21.                 if (temp==-1) {
  22.                         flag=false;
  23.                 } else {
  24.                         flag=true;
  25.                 }
  26.         }
  27.         return flag;
  28. }
  29. function UnicodeToAnsi(chrCode) {
  30.         var chrHex=chrCode.toString();
  31.         chrHex="000"+chrHex.toUpperCase();
  32.         chrHex=chrHex.substr(chrHex.length-4);
  33.         var i=UnicodeChr().indexOf(chrHex);
  34.         if (i!=-1) {
  35.                 chrHex=AnsicodeChr().substr(i,4);
  36.         }
  37.         return parseInt(chrHex,16);
  38. }
  39. function cn2asc(cn) {
  40.         var m:RegExp=/[^\x00-\xff]/g;
  41.         var n:String=cn;
  42.         var a:String=n;
  43.         while (a==m.exec(n)) {
  44.                 a=a.split(a).join(escape(a).split("%u").join(""));
  45.         }
  46.         return a;
  47. }
  48. function pinyin(char) {
  49.         if (!char.charCodeAt(0) ||char.charCodeAt(0) < 1328) {
  50.                 return char;
  51.         }
  52.         if (spellArray[char.charCodeAt(0)]) {
  53.                 return spellArray[char.charCodeAt(0)];
  54.         }
  55.         var ascCode = UnicodeToAnsi(cn2asc(char));
  56.         if (!(ascCode >"0xB0A0" && ascCode<"0xD7FC")) {
  57.                 return char;
  58.         }
  59.         for (var i=ascCode; (!spell[i] && i>0); ) {
  60.                 i--;
  61.         }
  62.         return spell[i];
  63. }
  64. function toPinyin(str) {
  65.         if (str) {
  66.                 var pStr = "";
  67.                 for (var i=0; i<str.length; i++) {
  68.                         if (isEnKong1(str.charAt(i))) {
  69.                                 pStr += str.charAt(i);
  70.                         } else {
  71.                                 pStr += " " + pinyin(str.charAt(i));
  72.                         }
  73.                 }
  74.                 return Trim(pStr);
  75.         }
  76. }
  77. trace(toPinyin("大盗二十八"));
  78. /////////////////////////////////////////////////*/
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
enc0717 + 2 辛苦了。很有用

总评分: 威望 + 2   查看全部评分

DO & do, so u do success!
西部数码顶级域名注册商39元抢注!
dao28 楼主
帖子
199
体力
367
威望
9
居住地
重庆市 南岸区
发表于 2008-7-29 14:27:29 |显示全部楼层
个人觉得AS跟JS越来越象一家人了,呵呵呵
DO & do, so u do success!
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

帖子
63
体力
142
威望
0
居住地
广东省 广州市
发表于 2008-7-29 14:40:30 |显示全部楼层
支持一下,辛苦你了

使用道具 举报

libins 

湘农青年

版主 手机认证 

帖子
4762
体力
7297
威望
11
居住地
广东省 广州市
发表于 2008-7-29 14:44:05 |显示全部楼层
每次都可以在你帖子里捡点便宜~

帮顶一个,谢谢分享,下次有好东西,我还会来滴。

使用道具 举报

dao28 楼主
帖子
199
体力
367
威望
9
居住地
重庆市 南岸区
发表于 2008-7-29 15:06:40 |显示全部楼层
呵呵,归功于别的朋友的分享啦。
DO & do, so u do success!

使用道具 举报

DFdou

银牌会员 手机认证 

帖子
913
体力
1956
威望
5
居住地
浙江省 杭州市
发表于 2008-7-29 15:41:12 |显示全部楼层
多谢分享 -,-

使用道具 举报

dao28 楼主
帖子
199
体力
367
威望
9
居住地
重庆市 南岸区
发表于 2008-7-29 17:56:46 |显示全部楼层

提醒注意

对一些不常用字不起作用。比如:淼 焱 等等。
需要增添两个对应阵列的字符串,spell的字符串了,有熟悉这块的朋友请指导下。

[ 本帖最后由 dao28 于 2008-7-29 17:58 编辑 ]
DO & do, so u do success!

使用道具 举报

wlxhhr 
帖子
1180
体力
5818
威望
0
发表于 2008-7-30 10:24:33 |显示全部楼层
这个字库包含多少常用字?

使用道具 举报

sshong 
帖子
241
体力
579
威望
3
居住地
浙江省 杭州市
发表于 2008-7-30 10:53:53 |显示全部楼层
说真的,你这个如果用于排序是不是太慢了?你这个无非就是得到gbk编码的间隔
譬如“啊”的gbk编码为“0XB0A1”
“阿”的gbk编码为“0XB0A2”
。。。
“哎”的gbk编码为“0XB0A5”
“爱”的gbk编码为“0XB0AE”
。。。
其实只用得到汉字gbk编码,再按照gbk编码排序,大部分都能排序正确,因为有些汉字是后加进去的,不是按照拼音编码顺序。

使用道具 举报

帖子
1912
体力
7180
威望
4
居住地
广东省 广州市
发表于 2008-7-31 10:29:45 |显示全部楼层
好东西..楼主幸苦了....

使用道具 举报

Einesce

荣誉管理

帖子
6153
体力
14139
威望
52
居住地
香港特别行政区 湾仔区
发表于 2008-7-31 12:18:37 |显示全部楼层
因為我推測這個程序原始版是Ansi編碼
而在ActionScript3中默認的編碼就是Unicode
所以根據以上的數組配對,就必須在之前進行一次Unicode轉Ansi.

可以重新寫一個unicode的匹配數組。就可以節約很多存儲空間消耗。
purple.Starpulse

使用道具 举报

寒绪

中级会员

帖子
272
体力
963
威望
8
居住地
江苏省 无锡市
发表于 2008-7-31 19:41:01 |显示全部楼层
比较深,对编码不熟悉,值得讨论下去,我学习了!
快乐每一天!

使用道具 举报

坦克

中级会员

帖子
264
体力
492
威望
0
居住地
河南省 平顶山市
发表于 2008-7-31 22:03:47 |显示全部楼层
感谢楼主dao28,真是辛苦了!

使用道具 举报

坦克

中级会员

帖子
264
体力
492
威望
0
居住地
河南省 平顶山市
发表于 2008-7-31 22:49:06 |显示全部楼层
VB版的Flash显示汉字拼音首字母

 提示:您可以先修改部分代码再运行


[ 本帖最后由 tank33cncn 于 2008-7-31 22:50 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-11 04:04 , Processed in 0.105093 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部