不同编码的字符串的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 ?>
编码是程序中常见的一个问题,希望能引起大家注意!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步