目前WEB的应用中, UTF-8编码和GB2312编码是并存在的,例如百度(baidu.com)和谷歌(google.com)的URL编码分别是GB2312编码和UTF-8编码。因为编码并存引发的乱码问题给WEB应用开发中带来很多麻烦,所以统一编码是在WEB开发中解决这个问题的主要途径。如今的问题是咱们同时得处理UTF-8编码和GB2312,例如咱们要统计一个网站由搜索引擎中带来的访问的关键词。html
好比咱们搜“中文”这个词,而后观察浏览器地址栏。
用Baidu获得的结果是:
http://www.baidu.com/s?wd=%D6%D0%CE%C4浏览器
用Google获得的结果是:
http://www.google.cn/search?hl=zh-CN&source=hp&q=%E4%B8%AD%E6%96%87&aq=f&oq=函数
红色的字符为“中文”这个词的URL编码,即,baidu_urlencode(”中文”)=%D6%D0%CE%C4 , google_urlencode(”中文”)=%E4%B8%AD%E6%96%87 ,因为编码不一样,很明显不同。网站
在PHP中有一个mb_convert_encoding的函数,给不一样编码的转换带来了方便,源代码以下(示例PHP源代码文档用UTF-8的编码存档):搜索引擎
header('Content-type: text/html; charset=utf-8'); echo '<br />百度关键词URL编码转换示例:<br />'; $urlBaidu = 'http://www.baidu.com/s?wd=%D6%D0%CE%C4'; $arrParse = parse_url($urlBaidu); parse_str($arrParse ['query'],$output); echo '乱码:' . $output['wd'] . '<br />'; //将gb2312编码转换成utf-8编码 $strUTF8 = mb_convert_encoding($output['wd'], 'utf-8', 'gb2312'); echo '可读码:' . $strUTF8 . '<br />'; echo '<br />谷歌关键词URL编码转换示例:<br />'; $urlGoogle = 'http://www.google.cn/search?hl=zh-CN&source=hp&q=%E4%B8%AD%E6%96%87&aq=f&oq='; $arrParse = parse_url($urlGoogle); parse_str($arrParse ['query'],$output); //谷歌关键词URL编码是utf-8,不用再做转换 echo '可读码:' . $output['q'] . '<br />';
转自 http://www.open-open.com/home/space-926-do-blog-id-5579.htmlgoogle