快速业务通道

各国语言字节编译

作者 佚名技术 来源 服务器技术 浏览 发布时间 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变量

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号