当网址包含中文时候,不同搜索引擎会有不同的解码方式。海报网 >>GB2312的Encode >>%BA%A3%B1%A8%CD%F8
海报网 >>utf-8的Encode >>%E6%B5%B7%E6%8A%A5%E7%BD%91如百度默认是无论该网页是何种编码,对中文地址默认是gb2312的解码 如:http://www.baidu.com/s?bs=site%3Ahaibao.cn+inurl%3A%B7%FE%CA%CE%B4%EE%C5%E4&f=8&wd=site%3Ahaibao.cn+inurl%3A%BA%A3%B1%A8%CD%F8
第一位该网页是utf-8的 ,但百度解码后地址是 http://www.haibao.cn/zhuanti/%BA%A3%B1%A8%CD%F8/google对中文url地址默认是utf-8的http://www.google.com.hk/search?hl=zh-CN&source=hp&q=site%3Ahaibao.cn+inurl%3A%E6%B5%B7%E6%8A%A5%E7%BD%91&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=
第二位,同样一个地址google解码后地址是 http://www.haibao.cn/zhuanti/%E6%B5%B7%E6%8A%A5%E7%BD%91/现在程序是dedecms的。
无论何种编码怎样让以下三个网址都能正常访问到。可以打开 http://www.chinaz.com/tag.php?/%CD%F8%D2%B3%C9%E8%BC%C6/
可以打开 http://www.chinaz.com/tag.php?/网页设计/
解码错误 http://www.chinaz.com/tag.php?/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/
海报网 >>utf-8的Encode >>%E6%B5%B7%E6%8A%A5%E7%BD%91如百度默认是无论该网页是何种编码,对中文地址默认是gb2312的解码 如:http://www.baidu.com/s?bs=site%3Ahaibao.cn+inurl%3A%B7%FE%CA%CE%B4%EE%C5%E4&f=8&wd=site%3Ahaibao.cn+inurl%3A%BA%A3%B1%A8%CD%F8
第一位该网页是utf-8的 ,但百度解码后地址是 http://www.haibao.cn/zhuanti/%BA%A3%B1%A8%CD%F8/google对中文url地址默认是utf-8的http://www.google.com.hk/search?hl=zh-CN&source=hp&q=site%3Ahaibao.cn+inurl%3A%E6%B5%B7%E6%8A%A5%E7%BD%91&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=
第二位,同样一个地址google解码后地址是 http://www.haibao.cn/zhuanti/%E6%B5%B7%E6%8A%A5%E7%BD%91/现在程序是dedecms的。
无论何种编码怎样让以下三个网址都能正常访问到。可以打开 http://www.chinaz.com/tag.php?/%CD%F8%D2%B3%C9%E8%BC%C6/
可以打开 http://www.chinaz.com/tag.php?/网页设计/
解码错误 http://www.chinaz.com/tag.php?/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/
if(goole){
}elseif(baidu){
}else{
}
不同的网站用不同的解析,问题不就解决了.
{
$tag = mb_convert_encoding($_SERVER['QUERY_STRING'],"UTF-8","GBK");
$tags = explode('/', $tag);
$tags = mb_detect_encoding($tags,array("GBK")); //判断字符串是不是GBK的%BA%A3%B1%A8%CD%F8 。
if ($tags == "GBK")
{
$tags = iconv("GBK","utf-8//IGNORE",$tags); //如果是就转换为UTF-8的编码
}
if(isset($tags[1]))
{
$tag = $tags[1];
}
if(isset($tags[2]))
{
$PageNo = intval($tags[2]);
}}
else
{
$tag = '';
}$tag = FilterSearch(urldecode($tag));========================
上面是我修改的,貌似这样不行!
可以打开 http://www.xx.com/tag.php?/%CD%F8%D2%B3%C9%E8%BC%C6/
可以打开 http://www.xx.com/tag.php?/网页设计/
解码错误 http://www.xx.com/tag.php?/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/
// From http://w3.org/International/questions/qa-forms-utf-8.html
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
} // function is_utf8if(! is_utf8($_SERVER['QUERY_STRING'])) {
$_SERVER['QUERY_STRING'] = iconv('gbk', 'utf-8', $_SERVER['QUERY_STRING']);
}
...