WEB應(yīng)用中,UTF-8編碼和GB2312編碼(圖)
2021-01-31
在當前的Web應(yīng)用程序中php url編碼轉(zhuǎn)換,UTF-8編碼和GB2312編碼共存。例如,百度()和Google()的URL編碼分別為GB2312編碼和UTF-8編碼。編碼共存引起的亂碼問題給WEB應(yīng)用程序的開發(fā)帶來了很多麻煩,因此統(tǒng)一編碼是解決WEB開發(fā)中這一問題的主要途徑。現(xiàn)在的問題是,我們必須同時處理UTF-8編碼和GB2312。例如,我們要計算搜索引擎訪問的網(wǎng)站的關(guān)鍵字。
例如,我們搜索“中文”一詞,然后觀察瀏覽器地址欄。
通過百度獲得的結(jié)果是:
%D6%D0%CE%C4
通過Google獲得的結(jié)果是:
%E4%B8%AD%E6%96%87&aq = f&oq =
紅色字符是單詞“中文”的URL編碼php url編碼轉(zhuǎn)換,即baidu_urlencode(“中文”)=%D6%D0%CE%C4,google_urlencode(“ Chinese”)=%E4%B8%AD% E6%96%87,由于編碼不同而有明顯差異。
PHP中有一個mb_convert_encoding函數(shù),它為不同編碼的轉(zhuǎn)換帶來了便利。源代碼如下(示例PHP源代碼文檔以UTF-8編碼存檔):
header('Content-type: text/html; charset=utf-8'); echo '
百度關(guān)鍵詞URL編碼轉(zhuǎn)換示例:
'; $urlBaidu = 'http://www.baidu.com/s?wd=%D6%D0%CE%C4'; $arrParse = parse_url($urlBaidu); parse_str($arrParse ['query'],$output); echo '亂碼:' . $output['wd'] . '
'; //將gb2312編碼轉(zhuǎn)換成utf-8編碼 $strUTF8 = mb_convert_encoding($output['wd'], 'utf-8', 'gb2312'); echo '可讀碼:' . $strUTF8 . '
'; echo '
谷歌關(guān)鍵詞URL編碼轉(zhuǎn)換示例:
'; $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); //谷歌關(guān)鍵詞URL編碼是utf-8,不用再作轉(zhuǎn)換 echo '可讀碼:' . $output['q'] . '
';