PHP轉換UTF-8和GB2312的URL編碼(轉)

目前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

相關文章
相關標籤/搜索