在用ThinkPHP做tags標簽的時候,出現了一個問題,就是能獲取到參數,但是查不出相應的結果。查看數據庫發現數據是存在的。問題出在哪了呢?
形如http:/www.XXXX.com/tags/index/%E8%87%AA%E5%8A%A8%E9%AA%8C%E8%AF%81.html的調用
參數是經過urlencode()編碼了的,使用urldecode()函數進行解碼,再進行查詢仍然沒有結果。
緊接著測試轉換編碼iconv()函數,結果成功了。
浏覽器默認的編碼是GB2312的,而這個項目采用的是UTF-8編碼的。
下面就將錯的代碼和修正後的代碼給大家看一下:
$kw= $_GET['_URL_']['2']; //錯誤的代碼,在iis上能獲取的參數,但是查詢不出結果的。 $kw= iconv("gb2312","utf-8",$_GET['_URL_']['2']); //經過編碼轉換的,能夠查詢出結果的。
另外,本方法只適用於iis環境。
還要注意,$_GET接收參數的時候本身就有urldecode轉碼功能,不需要再進行urldecode解碼操作!