有的网站对查询词用encodeURIComponent decodeURIComponent进行编码,因此在用php抓取页面时,采用urlencode对查询词进行编码时就会出现编码不符的问题。解决的办法如下:
<?php
// encodeURIComponentURI把字符串采用UTF-8编码格式转化编码。 对于utf-8的比较简单,与urlencode基本上是互换的。但是对于gbk要转码。
// 1 模拟js的 encodeURIComponent
urlencode(iconv("gbk", "UTF-8", '相当'));
// 相当于js encodeURIComponent 但 1. js的这个方法不对 !*()' 进行编码 2. urlencode 将空格编码成'+' 而 encodeURIComponent将空格转成 '%20'
// 虽然encodeURIComponent不可以对这些字符编码,但是 decodeURIComponent 却可以解码"由php urlencode来编码的这些字符"
// 例如 $str = urlencode("!*()'"); 将$str中的值用 decodeURIComponent 是可以解码的。
// 2 模拟js的 decodeURIComponent
iconv("UTF-8", "gbk", urldecode('%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD'));// 里面的内容是由encodeURIComponent编的码
?>
特殊说明,本文版权归 ning个人博客 所有带原创标签请勿转载,转载请注明出处.