我想解決外國字符問題,並將它們與數據庫值匹配。在一頁上提交表單urlencodes獲取值,不在另一頁上
我已經設法從數據庫查詢中獲得一個匹配,但我現在遇到了一個不同的問題,只是不知道爲什麼會發生這種情況。
在整個網站的所有頁面上都有一個標題包含,其中包含一個用於搜索該網站的輸入字段。 <form action="/search.php" method="get"><input name="q" type="text" />etc...
我的問題查詢字符串是這樣的grønhøj。當我將這個字符串輸入到主頁上的輸入表單中時,我會通過如下URL訪問搜索頁:search.php?q = gr%F8nh%F8j目前無法正常工作。 但是,如果我然後重新輸入相同的搜索查詢到搜索頁面上的im時,頁面重新加載,除了url現在看起來像這樣:search.php?q =grønhøj哪些工作。
如果生成的url始終保持不變,那麼我沒有問題,但因爲它不一致,所以我不知道如何爲查詢字符串的兩個可能版本提供解決方案。
所以我想我有2個問題。
1)爲什麼在使用完全相同的表單提交字符串時url不會保持不變? 2)我如何操縱url的兩個版本(或停止導致不同url的不同頁面),以便生成的字符串是一致的,而不管我得到哪個版本的url?
更新:我發現了一個函數來檢測utf8編碼Here這讓我轉我如何處理URL字符串取決於哪個網址我得到的版本,所以現在我的主要問題是固定的。
我仍然想知道爲什麼我從不同的頁面中得到2個不同的url變量,即使這個表單在整個網站中是一致的包含。有任何想法嗎?
雖然理論上是有道理的,在我的情況下,它沒有工作。我認爲這是因爲已經urlencoded的字符串是沒有urlencoded的是utf8編碼的,所以當應用urldecode/encode時,得到的字符串每個ø有2%##代碼,而不僅僅是我的第一個例子中的代碼網址。我發現了一個函數來檢測utf8編碼,這使我可以切換如何處理工作的字符串。 – Novocaine 2013-02-13 14:55:51
沒錯,如果你可以檢測到utf-8(或者任何其他的字符集編碼),那麼你幾乎可以走了。它解決了你的問題。作爲擴展,你可以嘗試解碼和再次編碼,以確保你得到一個純粹的urlencoded查詢字符串。但只有在必要的情況下。如果解碼字符集解決了你的問題,那就放在那。 – arijeet 2013-02-13 15:00:59
是的,它似乎現在已經修復,但你的建議確實幫助我發現一個是utf8編碼,另一個不是,所以我會接受你的答案,乾杯。 – Novocaine 2013-02-13 15:06:29