php实现utf-8与gb2312的url编码转换

发布时间:2021-01-21编辑:脚本学堂
本文介绍了php实现utf8与gb2312编码转换的方法,有关url编码转换的例子,有需要的朋友参考下。

在现在的网页应用中,utf-8编码和gb2312编码是并存在的,例如百度(baidu.com)和谷歌(google.com)的url编码分别是gb2312编码和utf-8编码。

由于编码并存引起的乱码问题给web应用开发中带来不少麻烦,因此统一编码是在web开发中解决这个问题的主要途径。

同时得处理utf-8编码和gb2312,例如要统计一个网站由搜索引擎中带来的访问的关键词。

比如,搜“中文”这个词,然后观察浏览器地址栏。
用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的编码存档:
 

复制代码 代码示例:
<?php
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 />';