请教网上看到的一个 GBK转utf-8的编码的例子 
结果发现 “【”的编码 转换不太正确 
<script type="text/javascript">  
var easyUTF8 = function(gbk){  
    if(!gbk){return '';}  
    var utf8 = [];  
    for(var i=0;i<gbk.length;i++){  
        var s_str = gbk.charAt(i);  
        if(!(/^%u/i.test(escape(s_str)))){utf8.push(s_str);continue;}  
        var s_char = gbk.charCodeAt(i);  
        var b_char = s_char.toString(2).split('');  
        var c_char = (b_char.length==15)?[0].concat(b_char):b_char;  
        var a_b =[];  
        a_b[0] = '1110'+c_char.splice(0,4).join('');  
        a_b[1] = '10'+c_char.splice(0,6).join('');  
        a_b[2] = '10'+c_char.splice(0,6).join('');  
        for(var n=0;n<a_b.length;n++){  
            utf8.push('%'+parseInt(a_b[n],2).toString(16).toUpperCase());  
        }  
    }  
    return utf8.join('');  
};  
document.write(easyUTF8('【'));  
</script>  
结果输出  %EC%81%20 但是 实际正确的utf-8编码 应该是 %E3%80%90
是哪里出问题了?我对js其实不太了解,以前朋友帮忙写的js,
还望不吝赐教谢谢

解决方案 »

  1.   

    补充一点,我想通过js前端把网页的标题和 url以 utf-8方式 传给服务器端
    initTip: function(doc) {
    superlixueshi.ajax({
    url: superlixueshi.server+"?title="+superlixueshi.easyUTF8(top.window.document.title)+"&url="+encodeURIComponent(top.window.document.URL),
    dataType: 'json',
    callback: function(data) {
    if(data){
    superlixueshi.createTip(data);
    }
    }
    });
    请问 还有别的好的方法 没有
      

  2.   

    不要上面所谓的转码,用固有函数:
     url: superlixueshi.server+"?title="+escape(top.window.document.title)+"&url="+escape(top.window.document.URL),
      

  3.   

    你那个是将gbk编码后的字符转为utf-8的编码吧,你传递的是为编码的字符,装换后结果应该不会对。。直接使用encodeURIComponent得到的就是utf-8的编码了啊