有个需求是获取远程页面的内容:
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
这时获取到的内容就是正确的。这是怎么回事呢??
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
这时获取到的内容就是正确的。这是怎么回事呢??
是因为系统的关系?还是服务器的关系?
中文 linux 默认的字符集是 utf-8这就是问题的所在
脚本在请求一个地址的时候,如果其中有中文,服务器就会自动给转成URL编码格式。这个转换的过程跟系统是什么字符集有什么关系呢?
我认为这是服务器实现相关的,URL里就不应该出现非ASCII字符,所以你未经过URLENCODE就放到URL里的字符,服务器怎么处理是实现问题,你不需要探究,只需要正确的做。