Home

PHP

Mysql

Linux

Jquery

Module

Tblog

不同编码的字符串的urlencode

  最近闲来无事写爬虫来抓取百度贴吧的帖子,发现一个奇怪的问题, 传进关键词用CURL请求发现返回的数据与想像不符, 于是呼开始了crazy test.

最终发现是传进的关键词urlencode后与百度贴吧转码后的不符. 

以关键词"明星"为例:

输入明星进入明星吧, 百度贴吧的地址为:http://tieba.baidu.com/f?kw=%C3%F7%D0%C7   

我本身的程序拼装地址为:http://tieba.baidu.com/f?kw=urlencode('明星'), 

返回:http://tieba.baidu.com/f?kw=%E6%98%8E%E6%98%9F

细心的朋友发现kw=后面的参数并不相同, 对!就是这个问题导致我每次请求返回的内容不正确. 其实原因是因为

百度的编码使用的是GBK, 而我程序中使用的是UTF-8的编码, 相同的字符串不同的编码集urlencode的后会有区别.

解决这个问题只需要把我们传进的关键词转换成GBK编码即可.

1 <?php
2 downloadPage('明星');
3 function downloadPage($kw) 4 { 5   $kw = iconv('UTF-8', 'GBK', $kw); 6   $url = 'http://tieba.baidu.com/f?kw='.$kw; 7   ...... 8 } 9 ?>


编码是程序中常见的一个问题,希望能引起大家注意!

posted @ 2012-08-23 13:57  追逐_something  阅读(784)  评论(0编辑  收藏  举报