有个需求是获取远程页面的内容:
mp3.baidu.com/m?f=ms&tn=baidump3&rf=taste&ct=134217728&lf=&rn=&word=经典老歌&lm=-1&ie=utf-8&pf=tags#1在我本地(WINDOWS)测的时候没问题,但到了服务器上(Linux),获取的内容就不对了。然后我试着用urlencode()方法转义了一下其中的中文“经典老歌”:
http://mp3.baidu.com/m?f=ms&tn=baidump3&rf=taste&ct=134217728&lf=&rn=&word=%E7%BB%8F%E5%85%B8%E8%80%81%E6%AD%8C&lm=-1&ie=utf-8&pf=tags#1
这时获取到的内容就是正确的。这是怎么回事呢??

解决方案 »

  1.   

    因为有中文,因为Linux 因为编码 因为你也知道答案了.
      

  2.   

    WEB服务器实现一般会过滤掉非ASCII字符,所以不URLENCODE就是悲剧。
      

  3.   

    WEB服务器会默认进行一次url解码
      

  4.   

    那请问为什么在WIN下就可以呢?
    是因为系统的关系?还是服务器的关系?
      

  5.   

    都有关系吧,但把编码都调一致了应该不会有问题,再说urlencode就那转化作用
      

  6.   

    中文 window 默认的字符集是 GBK
    中文 linux 默认的字符集是 utf-8这就是问题的所在
      

  7.   

    不好意思我没太听明白~我理解的过程是:
    脚本在请求一个地址的时候,如果其中有中文,服务器就会自动给转成URL编码格式。这个转换的过程跟系统是什么字符集有什么关系呢?
      

  8.   


    我认为这是服务器实现相关的,URL里就不应该出现非ASCII字符,所以你未经过URLENCODE就放到URL里的字符,服务器怎么处理是实现问题,你不需要探究,只需要正确的做。