字符中"音乐"怎么编码才可以得到这样的字符串"%E9%9F%B3%E4%B9%90",为何这个链接http://cnweb.search.live.com/results.aspx?q=音乐总是乱码,要怎么提交表单才能得到正确的网页?

解决方案 »

  1.   

    <?php
    echo urlencode('音乐');
    ?>
      

  2.   


    怎么打印出的是这东西"%D2%F4%C0%D6",不对呀?
      

  3.   


    <script   language="javascript">  
    alert(EncodeUtf8('音乐'));
      function EncodeUtf8(s1)
       {
       var s = escape(s1);
       var sa = s.split("%");
       var retV ="";
       if(sa[0] != "")
       {
       retV = sa[0];
       }
       for(var i = 1; i < sa.length; i ++)
       {
       if(sa[i].substring(0,1) == "u")
       {
       retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));
      
       }
       else retV += "%" + sa[i];
       }
      
       return retV;
       }
       function Str2Hex(s)
       {
       var c = "";
       var n;
       var ss = "0123456789ABCDEF";
       var digS = "";
       for(var i = 0; i < s.length; i ++)
       {
       c = s.charAt(i);
       n = ss.indexOf(c);
       digS += Dec2Dig(eval(n));
      
       }
       //return value;
       return digS;
       }
       function Dec2Dig(n1)
       {
       var s = "";
       var n2 = 0;
       for(var i = 0; i < 4; i++)
       {
       n2 = Math.pow(2,3 - i);
       if(n1 >= n2)
       {
       s += '1';
       n1 = n1 - n2;
       }
       else
       s += '0';
      
       }
       return s;
      
       }
       function Dig2Dec(s)
       {
       var retV = 0;
       if(s.length == 4)
       {
       for(var i = 0; i < 4; i ++)
       {
       retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
       }
       return retV;
       }
       return -1;
       }
       function Hex2Utf8(s)
       {
       var retS = "";
       var tempS = "";
       var ss = "";
       if(s.length == 16)
       {
       tempS = "1110" + s.substring(0, 4);
       tempS += "10" + s.substring(4, 10);
       tempS += "10" + s.substring(10,16);
       var sss = "0123456789ABCDEF";
       for(var i = 0; i < 3; i ++)
       {
       retS += "%";
       ss = tempS.substring(i * 8, (eval(i)+1)*8);
      
      
      
       retS += sss.charAt(Dig2Dec(ss.substring(0,4)));
       retS += sss.charAt(Dig2Dec(ss.substring(4,8)));
       }
       return retS;
       }
       return "";
       }
    </script>   
      

  4.   

    在PHP是没有直接函数的,那个URLENCODE对英文可能可以,中文是不可以地。
      

  5.   


    在不同字符集下,urlencode后的编码不同。你可以尝试将中文转换为utf-8或gb2312.然后再urlencode,看看哪个与你要的结果相同。
    google和百度对相同内容的urlencode结果就不同,因为它们一共用gb2312,一个用utf-8
      

  6.   

    http://cnweb.search.live.com/results.aspx?q=音乐 至于你在浏览器上直接输入这个链接得到的q参数值为乱码的问题,是由于你的程序脚本用的字符集与你浏览器上的默认字符集不同。
    你在浏览器上直接输入这个地址时也许是gbk,简体中文的XP系统就是gbk。而你的程序使用的字符集是utf-8,所以会乱码。
      

  7.   

    $name=$_GET['oldcnameso'];             获取参数
     $names= urlencode($name);                     编码 
     $a=urldecode($names);                        解码   
    这个不知是你想要的吗?
      

  8.   

    $s = '音乐';
    echo urlencode(iconv('gbk', 'utf-8', $s)); //out %E9%9F%B3%E4%B9%90