0
我有一個搜索腳本,用戶輸入一些使用GET發送的查詢字。如果用戶輸入包含特殊字符,例如äpple
url變成search.php?q=äpple
,一切正常。但是,如果用戶重新運行此URL search.php?q=äpple
瀏覽器地址字段顯示search.php?q=%E4pple
並且查詢失敗。我應該如何解碼該字符串。 urldecode
沒有工作。我認爲這正是它的原因,所以還有其他的錯誤?或者我可以嘗試哪些其他功能?使用特殊字符解碼用戶輸入
更新,如果我用它產生的權利ä
字符,但如果在URL字符串是通過GET發送,從而正確地(和工作)ä
不已,函數utf8_encode打亂它的search.php?q=%E4pple
函數utf8_encode 。
我想我可以做一個條件是我做了一些事情之前檢查編碼,但它不是一個更簡單的方法?
你不應該解碼它,因爲PHP爲你做。順便說一下,你的頁面編碼是什麼? – zerkms
好的謝謝,UTF-8和常規questionmarkbox顯示,但其他一切正常。所以你的意思是說,如果一個用戶使用一個在瀏覽器URL中顯示爲「現狀」並且腳本正在工作的特殊查詢進行搜索,那麼使用該瀏覽器現在獲得URL編碼的相同URL重新運行該頁面(請參閱問題)應該工作,因爲PHP應該照顧解碼? – Joseph
瀏覽器**始終**發送非ASCII字符作爲轉義序列。因此,即使它在查詢字符串中是「ä」,瀏覽器也會將其作爲「%nnnn」發送(您可以通過查看Web服務器訪問日誌來查看它) – zerkms