本帖最后由 swqwer 于 2013-01-27 16:56:25 编辑

解决方案 »

  1.   

    有12个&#,但有36个%,前一个是utf-32(?),后一个是utf-8
    js忘光了,纯粹位运算方法我倒可以做出来 
      

  2.   

    这样搞有意义,这样整的代码变长 var code="潮州市宏业石油气有限公司"function convert(str){
      var div=document.createElement("div");
      function getTex(){ return div.textContent||div.innerText  }
      div.innerHTML=str;
      div.innerHTML=getTex();
      return encodeURI(encodeURI(getTex()))
    }
    alert( convert(code) ) 
      

  3.   

    原来encodeURI做这脏活,受教了 
      

  4.   


    var str='潮州市宏业石油气有限公司';
    str=str.replace(/&#([0-9]+);/g,function(){
    var h='000'+Number(arguments[1]).toString(16);
    return unescape('%u'+h.substr(-4));
    });
    console.log(str);
      

  5.   

    再简化一下var code="潮州市宏业石油气有限公司";
    function convert(str){
      str=str.replace(/\D+(\d+);/g,function(){return  String.fromCharCode(arguments[1]) });
      return encodeURI(encodeURI(str))
    }
    alert( convert(code) ) 
      

  6.   

    继续简化 var str='潮州市宏业石油气有限公司';
    alert(String.fromCharCode.apply(null,str.match(/[0-9]+/g)));
      

  7.   

    你是回答了我的问题 ,谢谢呀 ,真心感谢 ,哈哈 祝你和antiwise越来越好!