使用PHP 5.3.2,我在與處理其名稱頁面的請求麻煩中有一個變音符:öPHP,urldecode()和元音 - Ø
製作使用的是Firefox請求+住HTTP標頭的test_ö_test.htm頁面,我可以看到Firefox會自動轉換/編碼變音符號時,它發出請求:
GET /test_%C3%B6_test.htm HTTP/1.1
現在,使用http://meyerweb.com/eric/tools/dencoder/我能夠test_ö_test.htm和TEST_之間的編碼/解碼%C3%B6_test.htm,所以我認爲編碼是正確的。
使用PHP的urldecode(),我得到test_ö_test.htm
而討厭404返回。請注意,test_ö_test.htm確實存在於文件系統上。
當我用javascript的escape()測試時,我得到test_%F6_test.htm。當我將其插入瀏覽器時,我會成功返回內容頁面。 urldecode()將它變回變音符號。
urldecode()是單字節,而%C3%B6似乎是多字節。無論如何,爲什麼不在服務器端編碼你的頁面名稱?或者,甚至更好,根本不使用擴展字符。 – 2010-10-27 01:20:27
[URL解碼在PHP中]可能的重複(http://stackoverflow.com/questions/1756862/url-decoding-in-php) – 2010-10-27 01:21:27
是的,這基本上是相同的問題 - 如果需要,很高興刪除此問題。 – starmonkey 2010-10-27 02:59:42