js转UTF8
时间:2010-08-24 来源:byzzz
function hex(a){
if(a<256) return "%"+hexmap[a>>4]+hexmap[a&0xf];
else return hex(a>>8)+hex(a&0xf);
}
function encodeUTF8(d) {
var utft = "";var a=d.toString();
for(var n=0; n<a.length; n++)
{
var c=a.charCodeAt(n);
if(c<128){
if(c==46||c==40||c==41||(c>47&&c<58)||(c>64&&c<91)||(c>96&&c<123)){
utft += a.charAt(i);
}else{
utft += hex(c);
}
}
else if(127<c && c<0x800)
{
utft += hex((c>>6)|192);
utft += hex((c&63)|128);
} else if(0x7ff<c && c<0x10000)
{
utft += hex((c>>12)|224);
utft += hex(((c>>6)&63)|128);
utft += hex((c&63)|128);
} else if(0xffff<c && c<0x200000)
{
utft += hex((c>>18)|0xf0);
utft += hex(((c>>12)&63)|128);
utft += hex(((c>>6)&63)|128);
utft += hex((c&63)|128);
} else if(0x1FFFFF<c && c<0x4000000)
{
utft += hex((c>>24)|0xf8);
utft += hex(((c>>18)&63)|128);
utft += hex(((c>>12)&63)|128);
utft += hex(((c>>6)&63)|128);
utft += hex((c&63)|128);
} else if(0x3FFFFFF<c && c<0x80000000)
{
utft += hex((c>>30)|0xfc);
utft += hex(((c>>24)&63)|128);
utft += hex(((c>>18)&63)|128);
utft += hex(((c>>12)&63)|128);
utft += hex(((c>>6)&63)|128);
utft += hex((c&63)|128);
}
}
return utft;
}
相关阅读 更多 +










