各国语言字节编译
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-11
不知道有没有人和我一样试过在Flash传递非英文字或数字的时候, 出现过乱码呢?? 之前flash8的一位朋友在写了篇无需资料库的聊天室当中有提到过这个问题, 所以这个教程就把每个字节编码成16进制... 这样就不会因为各种语言的编码长度不同而无法正确显示, 特别适合使用在留言扳和论坛当中哦 :), 好啦...那么就开始吧 String.prototype.encode = function() { //编译部分, 这里使用prototype方便了很多 var s = ""; for (var i = 0; i var d = this.charCodeAt(i); //取得每个字的code代码 var c = this.charAt(i); //取得现有的每个文字 if (d<127) { //这里判断是否为英文字母或数字等Flash player所能接受的文字 s += "\\u"+c; //是的话就存在变量s当中 } else { //如果为非Flash player所能接受的文字的话 s += "\\u"+len(d.toString(16)); // 先给每个字节前加个分隔字段, 然后再来把code代码以16进制编译, 然后再存放到s变量当中 } } return s; }; function len(str) { //因为不同语言的进制长度不一样, 所以我们必须让他们处于一样的长度 while (str.length<4) { //因为中文和日文的编码长度为最长, 4个字节...所以只要判断是否为4就可以了 str = "0"+str; //如果进制字节小于4的话就在前方加个0, 以达到4个字节 } return str; } String.prototype.decode = function() { //反编译部分 var a = this.split("\\u"); //使用split把我们设定分隔字段分开来成为数组 var n = a.length; //取得数组的长度 while (--n) { var s = a[n]; if(s.length > 1) { //判断n如果大于1就代表是非Flash Player所支援的文字, 而进行导向编译 a[n] = String.fromCharCode(parseInt(s.substring(0, 4), 16)); //取得我们设定的4个字节然后返回16进制之前的code代码, 然后再转换成文字 } } return a.join(""); //最后把数组在此结合起来成一行文字, 并回传 }; var test = "各国语言的字节都没问题, zzZZ190!@$, 分かりました, ??? ?????, ?????? ???"; var e = test.encode(); trace(e); trace(e.decode()); 是不是各国语言都可以拼凑在一起了呢 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: Flash Pageflip Component下一篇: AS变量
关于各国语言字节编译的所有评论