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

webphp 12年前發布 | 4K 次閱讀

目前WEB的應用中, 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的編碼存檔):

header('Content-type: text/html; charset=utf-8');

echo '<br />百度關鍵詞URL編碼轉換示例:<br />';

$urlBaidu = '

$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 = '

$arrParse = parse_url($urlGoogle);

parse_str($arrParse ['query'],$output);

//谷歌關鍵詞URL編碼是utf-8,不用再作轉換 echo '可讀碼:' . $output['q'] . '<br />';</pre>

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!